|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r69007 - in sandbox/local/libs/local/params_name: . boost/detail/preprocessor boost/local boost/local/aux_ boost/local/aux_/function_macros boost/local/aux_/function_macros/code_ boost/local/aux_/preprocessor/sign
From: lorcaminiti_at_[hidden]
Date: 2011-02-18 17:54:52
Author: lcaminiti
Date: 2011-02-18 17:54:41 EST (Fri, 18 Feb 2011)
New Revision: 69007
URL: http://svn.boost.org/trac/boost/changeset/69007
Log:
Code PARAMS macro to expand functor code.
Added LOCAL_TYPEOF macro (and relate typedef inside the functor).
Added:
sandbox/local/libs/local/params_name/boost/local/typeof.hpp (contents, props changed)
Text files modified:
sandbox/local/libs/local/params_name/00.cpp | 81506 +++++++++++++++++++++++++++++++--------
sandbox/local/libs/local/params_name/03.cpp | 4
sandbox/local/libs/local/params_name/boost/detail/preprocessor/nilseq.hpp | 12
sandbox/local/libs/local/params_name/boost/local/aux_/abstract_function.hpp | 4
sandbox/local/libs/local/params_name/boost/local/aux_/file.hpp | 8
sandbox/local/libs/local/params_name/boost/local/aux_/function_macros/code_/binding.hpp | 6
sandbox/local/libs/local/params_name/boost/local/aux_/function_macros/code_/deduce_result_type.hpp | 1
sandbox/local/libs/local/params_name/boost/local/aux_/function_macros/code_/functor.hpp | 192
sandbox/local/libs/local/params_name/boost/local/aux_/function_macros/code_/param.hpp | 95
sandbox/local/libs/local/params_name/boost/local/aux_/function_macros/params.hpp | 2
sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/params_unbind.hpp | 43
sandbox/local/libs/local/params_name/boost/local/aux_/symbol.hpp | 17
sandbox/local/libs/local/params_name/boost/local/function.hpp | 98
13 files changed, 64915 insertions(+), 17073 deletions(-)
Modified: sandbox/local/libs/local/params_name/00.cpp
==============================================================================
--- sandbox/local/libs/local/params_name/00.cpp (original)
+++ sandbox/local/libs/local/params_name/00.cpp 2011-02-18 17:54:41 EST (Fri, 18 Feb 2011)
@@ -413,6 +413,10 @@
+
+
+
+
@@ -46486,7 +46490,6 @@
-namespace boost {
@@ -46497,21 +46500,15 @@
-#pragma warning(push)
-#pragma warning(disable:4181)
-template< typename T > struct add_const { typedef T const type; };
-#pragma warning(pop)
-template< typename T > struct add_const<T&> { typedef T& type; };
-}
@@ -47066,7 +47063,6 @@
-namespace boost {
@@ -47077,21 +47073,15 @@
-#pragma warning(push)
-#pragma warning(disable:4181)
-template< typename T > struct add_cv { typedef T const volatile type; };
-#pragma warning(pop)
-template< typename T > struct add_cv<T&> { typedef T& type; };
-}
@@ -47969,9 +47959,7 @@
-namespace boost {
-namespace detail {
@@ -48009,11 +47997,6 @@
-template <typename T>
-struct add_reference_rvalue_layer
-{
- typedef T& type;
-};
@@ -48023,29 +48006,17 @@
-template <typename T>
-struct add_reference_impl
-{
- typedef typename add_reference_rvalue_layer<T>::type type;
-};
-template< typename T > struct add_reference_impl<T&> { typedef T& type; };
-template<> struct add_reference_impl<void> { typedef void type; };
-template<> struct add_reference_impl<void const> { typedef void const type; };
-template<> struct add_reference_impl<void volatile> { typedef void volatile type; };
-template<> struct add_reference_impl<void const volatile> { typedef void const volatile type; };
-}
-template< typename T > struct add_reference { typedef typename boost::detail::add_reference_impl<T>::type type; };
@@ -48053,7 +48024,6 @@
-}
@@ -48522,15 +48492,12 @@
-namespace boost{
-template< typename T > struct add_lvalue_reference { typedef typename boost::add_reference<T>::type type; };
-}
@@ -49727,20 +49694,13 @@
-namespace boost {
-namespace detail{
-template <class T>
-struct remove_rvalue_ref
-{
- typedef T type;
-};
@@ -49749,10 +49709,7 @@
-}
-template< typename T > struct remove_reference { typedef typename boost::detail::remove_rvalue_ref<T>::type type; };
-template< typename T > struct remove_reference<T&> { typedef T type; };
@@ -49770,7 +49727,6 @@
-}
@@ -50239,9 +50195,7 @@
-namespace boost {
-namespace detail {
@@ -50277,20 +50231,11 @@
-template <typename T>
-struct add_pointer_impl
-{
- typedef typename remove_reference<T>::type no_ref_type;
- typedef no_ref_type* type;
-};
-}
-template< typename T > struct add_pointer { typedef typename boost::detail::add_pointer_impl<T>::type type; };
-}
@@ -51315,24 +51260,17 @@
-namespace boost {
-template< typename T > struct is_void : ::boost::integral_constant<bool,false> { };
-template<> struct is_void< void > : ::boost::integral_constant<bool,true> { };
-template<> struct is_void< void const > : ::boost::integral_constant<bool,true> { };
-template<> struct is_void< void volatile > : ::boost::integral_constant<bool,true> { };
-template<> struct is_void< void const volatile > : ::boost::integral_constant<bool,true> { };
-}
@@ -51869,36 +51807,17 @@
-namespace boost {
-namespace type_traits_detail {
- template <typename T, bool b>
- struct add_rvalue_reference_helper
- { typedef T type; };
- template <typename T>
- struct add_rvalue_reference_helper<T, true>
- {
- typedef T type;
- };
- template <typename T>
- struct add_rvalue_reference_imp
- {
- typedef typename boost::type_traits_detail::add_rvalue_reference_helper
- <T, (!is_void<T>::value && !is_reference<T>::value) >::type type;
- };
-}
-template< typename T > struct add_rvalue_reference { typedef typename boost::type_traits_detail::add_rvalue_reference_imp<T>::type type; };
-}
@@ -52452,7 +52371,6 @@
-namespace boost {
@@ -52463,21 +52381,15 @@
-#pragma warning(push)
-#pragma warning(disable:4181)
-template< typename T > struct add_volatile { typedef T volatile type; };
-#pragma warning(pop)
-template< typename T > struct add_volatile<T&> { typedef T& type; };
-}
@@ -53871,12 +53783,9 @@
-namespace boost {
-template< typename T, typename U > struct is_same : ::boost::integral_constant<bool,false> { };
-template< typename T > struct is_same< T,T > : ::boost::integral_constant<bool,true> { };
@@ -53936,7 +53845,6 @@
-}
@@ -54760,11 +54668,8 @@
-namespace boost { namespace mpl {
-template< std::size_t N > struct size_t;
-}}
@@ -54987,21 +54892,13 @@
-namespace boost { namespace mpl {
-template< std::size_t N >
-struct size_t
-{
- static const std::size_t value = N;
- typedef size_t type;
- typedef std::size_t value_type;
- typedef integral_c_tag tag;
@@ -55017,23 +54914,12 @@
- typedef boost::mpl::size_t< static_cast<std::size_t>((value + 1)) > next;
- typedef boost::mpl::size_t< static_cast<std::size_t>((value - 1)) > prior;
-
-
-
-
- operator std::size_t() const { return static_cast<std::size_t>(this->value); }
-};
-template< std::size_t N >
-std::size_t const boost::mpl::size_t< N >::value;
-}}
@@ -55087,52 +54973,23 @@
-#pragma warning(push)
-#pragma warning(disable: 4121 4512)
-namespace boost {
-template <typename T> struct alignment_of;
-namespace detail {
-#pragma warning(push)
-#pragma warning(disable:4324)
-template <typename T>
-struct alignment_of_hack
-{
- char c;
- T t;
- alignment_of_hack();
-};
-#pragma warning(pop)
-template <unsigned A, unsigned S>
-struct alignment_logic
-{
- static const std::size_t value = A < S ? A : S;
-};
-template< typename T >
-struct alignment_of_impl
-{
-
-
-
-
-
- static const std::size_t value = (::boost::detail::alignment_logic< sizeof(::boost::detail::alignment_of_hack<T>) - sizeof(T), __alignof(T) >::value);
@@ -55148,20 +55005,12 @@
-};
-}
-template< typename T > struct alignment_of : ::boost::integral_constant<std::size_t,::boost::detail::alignment_of_impl<T>::value> { };
-template <typename T>
-struct alignment_of<T&>
- : alignment_of<T*>
-{
-};
@@ -55172,20 +55021,14 @@
-template<> struct alignment_of<void> : ::boost::integral_constant<std::size_t,0> { };
-template<> struct alignment_of<void const> : ::boost::integral_constant<std::size_t,0> { };
-template<> struct alignment_of<void volatile> : ::boost::integral_constant<std::size_t,0> { };
-template<> struct alignment_of<void const volatile> : ::boost::integral_constant<std::size_t,0> { };
-}
-#pragma warning(pop)
@@ -55515,12 +55358,7 @@
-namespace boost { namespace mpl { namespace aux {
-template< typename T > struct value_type_wknd
-{
- typedef typename T::value_type type;
-};
@@ -55529,7 +55367,6 @@
-}}}
@@ -55665,11 +55502,8 @@
-namespace boost { namespace mpl {
-struct void_;
-}}
@@ -55800,16 +55634,9 @@
-namespace boost { namespace mpl {
-struct na
-{
- typedef na type;
- enum { value = 0 };
-};
-}}
@@ -55870,54 +55697,25 @@
-namespace boost { namespace mpl {
-template< typename T >
-struct is_na
- : false_
-{
-};
-template<>
-struct is_na<na>
- : true_
-{
-};
-template< typename T >
-struct is_not_na
- : true_
-{
-};
-template<>
-struct is_not_na<na>
- : false_
-{
-};
-template< typename T, typename U > struct if_na
-{
- typedef T type;
-};
-template< typename U > struct if_na<na,U>
-{
- typedef U type;
-};
@@ -55941,7 +55739,6 @@
-}}
@@ -56101,16 +55898,8 @@
-namespace boost { namespace mpl {
-template<
- typename T = na
- , typename Tag = void_
-
- >
-struct lambda;
-}}
@@ -65638,55 +65427,17 @@
-namespace boost { namespace mpl {
-template<
- bool C
- , typename T1
- , typename T2
- >
-struct if_c
-{
- typedef T1 type;
-};
-template<
- typename T1
- , typename T2
- >
-struct if_c<false,T1,T2>
-{
- typedef T2 type;
-};
-template<
- typename T1 = na
- , typename T2 = na
- , typename T3 = na
- >
-struct if_
-{
- private:
-
- typedef if_c<
- static_cast<bool>(T1::value)
- , T2
- , T3
- > almost_type_;
-
- public:
- typedef typename almost_type_::type type;
-
-
-};
@@ -65744,9 +65495,7 @@
-template<> struct if_< na , na , na > { template< typename T1 , typename T2 , typename T3 , typename T4 =na , typename T5 =na > struct apply : if_< T1 , T2 , T3 > { }; }; template< typename Tag > struct lambda< if_< na , na , na > , Tag > { typedef false_ is_le; typedef if_< na , na , na > result_; typedef if_< na , na , na > type; };
-}}
@@ -67562,6 +67311,7 @@
+namespace boost {
@@ -67572,15 +67322,21 @@
+#pragma warning(push)
+#pragma warning(disable:4181)
+template< typename T > struct add_const { typedef T const type; };
+#pragma warning(pop)
+template< typename T > struct add_const<T&> { typedef T& type; };
+}
@@ -68135,6 +67891,7 @@
+namespace boost {
@@ -68145,15 +67902,21 @@
+#pragma warning(push)
+#pragma warning(disable:4181)
+template< typename T > struct add_cv { typedef T const volatile type; };
+#pragma warning(pop)
+template< typename T > struct add_cv<T&> { typedef T& type; };
+}
@@ -69031,7 +68794,9 @@
+namespace boost {
+namespace detail {
@@ -69056,7 +68821,6 @@
-namespace boost {
@@ -69064,26 +68828,19 @@
-template< typename T > struct is_integral : ::boost::integral_constant<bool,false> { };
-template<> struct is_integral< unsigned char > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned char const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned char volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned char const volatile > : ::boost::integral_constant<bool,true> { };
-template<> struct is_integral< unsigned short > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned short const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned short volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned short const volatile > : ::boost::integral_constant<bool,true> { };
-template<> struct is_integral< unsigned int > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned int const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned int volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned int const volatile > : ::boost::integral_constant<bool,true> { };
-template<> struct is_integral< unsigned long > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned long const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned long volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned long const volatile > : ::boost::integral_constant<bool,true> { };
-template<> struct is_integral< signed char > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed char const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed char volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed char const volatile > : ::boost::integral_constant<bool,true> { };
-template<> struct is_integral< signed short > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed short const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed short volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed short const volatile > : ::boost::integral_constant<bool,true> { };
-template<> struct is_integral< signed int > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed int const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed int volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed int const volatile > : ::boost::integral_constant<bool,true> { };
-template<> struct is_integral< signed long > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed long const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed long volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed long const volatile > : ::boost::integral_constant<bool,true> { };
-template<> struct is_integral< bool > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< bool const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< bool volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< bool const volatile > : ::boost::integral_constant<bool,true> { };
-template<> struct is_integral< char > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< char const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< char volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< char const volatile > : ::boost::integral_constant<bool,true> { };
+template <typename T>
+struct add_reference_rvalue_layer
+{
+ typedef T& type;
+};
-template<> struct is_integral< wchar_t > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< wchar_t const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< wchar_t volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< wchar_t const volatile > : ::boost::integral_constant<bool,true> { };
@@ -69091,19 +68848,29 @@
+template <typename T>
+struct add_reference_impl
+{
+ typedef typename add_reference_rvalue_layer<T>::type type;
+};
+template< typename T > struct add_reference_impl<T&> { typedef T& type; };
+template<> struct add_reference_impl<void> { typedef void type; };
+template<> struct add_reference_impl<void const> { typedef void const type; };
+template<> struct add_reference_impl<void volatile> { typedef void volatile type; };
+template<> struct add_reference_impl<void const volatile> { typedef void const volatile type; };
+}
-template<> struct is_integral< ::boost::ulong_long_type > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< ::boost::ulong_long_type const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< ::boost::ulong_long_type volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< ::boost::ulong_long_type const volatile > : ::boost::integral_constant<bool,true> { };
-template<> struct is_integral< ::boost::long_long_type > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< ::boost::long_long_type const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< ::boost::long_long_type volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< ::boost::long_long_type const volatile > : ::boost::integral_constant<bool,true> { };
+template< typename T > struct add_reference { typedef typename boost::detail::add_reference_impl<T>::type type; };
@@ -69580,12 +69347,15 @@
+namespace boost{
+template< typename T > struct add_lvalue_reference { typedef typename boost::add_reference<T>::type type; };
+}
@@ -69876,15 +69646,9 @@
-namespace boost {
-template< typename T > struct is_float : ::boost::integral_constant<bool,false> { };
-template<> struct is_float< float > : ::boost::integral_constant<bool,true> { }; template<> struct is_float< float const > : ::boost::integral_constant<bool,true> { }; template<> struct is_float< float volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_float< float const volatile > : ::boost::integral_constant<bool,true> { };
-template<> struct is_float< double > : ::boost::integral_constant<bool,true> { }; template<> struct is_float< double const > : ::boost::integral_constant<bool,true> { }; template<> struct is_float< double volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_float< double const volatile > : ::boost::integral_constant<bool,true> { };
-template<> struct is_float< long double > : ::boost::integral_constant<bool,true> { }; template<> struct is_float< long double const > : ::boost::integral_constant<bool,true> { }; template<> struct is_float< long double volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_float< long double const volatile > : ::boost::integral_constant<bool,true> { };
-}
@@ -70747,28 +70511,18 @@
-namespace boost {
-namespace detail {
-template< typename T >
-struct is_arithmetic_impl
-{
- static const bool value = (::boost::type_traits::ice_or< ::boost::is_integral<T>::value, ::boost::is_float<T>::value >::value);
-};
-}
-template< typename T > struct is_arithmetic : ::boost::integral_constant<bool,::boost::detail::is_arithmetic_impl<T>::value> { };
-}
@@ -70798,13 +70552,20 @@
+namespace boost {
+namespace detail{
+template <class T>
+struct remove_rvalue_ref
+{
+ typedef T type;
+};
@@ -70813,7 +70574,10 @@
+}
+template< typename T > struct remove_reference { typedef typename boost::detail::remove_rvalue_ref<T>::type type; };
+template< typename T > struct remove_reference<T&> { typedef T type; };
@@ -70831,6 +70595,7 @@
+}
@@ -71299,7 +71064,9 @@
+namespace boost {
+namespace detail {
@@ -71335,11 +71102,20 @@
+template <typename T>
+struct add_pointer_impl
+{
+ typedef typename remove_reference<T>::type no_ref_type;
+ typedef no_ref_type* type;
+};
+}
+template< typename T > struct add_pointer { typedef typename boost::detail::add_pointer_impl<T>::type type; };
+}
@@ -71820,7 +71596,6 @@
-namespace boost {
@@ -71967,11 +71742,9 @@
-template< typename T > struct is_enum : ::boost::integral_constant<bool,__is_enum(T)> { };
-}
@@ -72367,17 +72140,24 @@
+namespace boost {
+template< typename T > struct is_void : ::boost::integral_constant<bool,false> { };
+template<> struct is_void< void > : ::boost::integral_constant<bool,true> { };
+template<> struct is_void< void const > : ::boost::integral_constant<bool,true> { };
+template<> struct is_void< void volatile > : ::boost::integral_constant<bool,true> { };
+template<> struct is_void< void const volatile > : ::boost::integral_constant<bool,true> { };
+}
@@ -72914,17 +72694,36 @@
+namespace boost {
+namespace type_traits_detail {
+ template <typename T, bool b>
+ struct add_rvalue_reference_helper
+ { typedef T type; };
+ template <typename T>
+ struct add_rvalue_reference_helper<T, true>
+ {
+ typedef T type;
+ };
+ template <typename T>
+ struct add_rvalue_reference_imp
+ {
+ typedef typename boost::type_traits_detail::add_rvalue_reference_helper
+ <T, (!is_void<T>::value && !is_reference<T>::value) >::type type;
+ };
+}
+template< typename T > struct add_rvalue_reference { typedef typename boost::type_traits_detail::add_rvalue_reference_imp<T>::type type; };
+}
@@ -73478,6 +73277,7 @@
+namespace boost {
@@ -73488,15 +73288,21 @@
+#pragma warning(push)
+#pragma warning(disable:4181)
+template< typename T > struct add_volatile { typedef T volatile type; };
+#pragma warning(pop)
+template< typename T > struct add_volatile<T&> { typedef T& type; };
+}
@@ -73642,22 +73448,12 @@
-namespace boost {
-template< typename T > struct is_array : ::boost::integral_constant<bool,false> { };
-template< typename T, std::size_t N > struct is_array< T[N] > : ::boost::integral_constant<bool,true> { };
-template< typename T, std::size_t N > struct is_array< T const[N] > : ::boost::integral_constant<bool,true> { };
-template< typename T, std::size_t N > struct is_array< T volatile[N] > : ::boost::integral_constant<bool,true> { };
-template< typename T, std::size_t N > struct is_array< T const volatile[N] > : ::boost::integral_constant<bool,true> { };
-template< typename T > struct is_array< T[] > : ::boost::integral_constant<bool,true> { };
-template< typename T > struct is_array< T const[] > : ::boost::integral_constant<bool,true> { };
-template< typename T > struct is_array< T volatile[] > : ::boost::integral_constant<bool,true> { };
-template< typename T > struct is_array< T const volatile[] > : ::boost::integral_constant<bool,true> { };
@@ -73700,7 +73496,6 @@
-}
@@ -73958,2626 +73753,960 @@
-namespace boost {
-namespace type_traits {
-no_type __cdecl is_mem_fun_pointer_tester(...);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)());
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)() const);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)() volatile);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)() const volatile);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( ...));
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( ...) const);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( ...) volatile);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( ...) const volatile);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)());
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)() const);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)() volatile);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)() const volatile);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( ...));
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( ...) const);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( ...) volatile);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( ...) const volatile);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)());
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)() const);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)() volatile);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)() const volatile);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( ...));
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( ...) const);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( ...) volatile);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( ...) const volatile);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)());
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)() const);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)() volatile);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)() const volatile);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( ...));
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( ...) const);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( ...) volatile);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( ...) const volatile);
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0));
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0) const);
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0) volatile);
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0) const volatile);
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 ...));
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 ...) const);
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 ...) volatile);
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 ...) const volatile);
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0));
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0) const);
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0) volatile);
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0) const volatile);
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 ...));
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 ...) const);
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 ...) volatile);
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 ...) const volatile);
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0));
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0) const);
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0) volatile);
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0) const volatile);
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 ...));
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 ...) const);
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 ...) volatile);
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 ...) const volatile);
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0));
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0) const);
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0) volatile);
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0) const volatile);
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 ...));
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 ...) const);
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 ...) volatile);
-template <class R, class T , class T0 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 ...) const volatile);
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1));
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1) const);
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1) volatile);
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1) const volatile);
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 ...));
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 ...) const);
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 ...) volatile);
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 ...) const volatile);
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1));
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1) const);
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1) volatile);
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1) const volatile);
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 ...));
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 ...) const);
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 ...) volatile);
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 ...) const volatile);
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1));
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1) const);
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1) volatile);
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1) const volatile);
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 ...));
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 ...) const);
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 ...) volatile);
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 ...) const volatile);
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1));
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1) const);
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1) volatile);
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1) const volatile);
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 ...));
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 ...) const);
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 ...) volatile);
-template <class R, class T , class T0 , class T1 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2));
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2) const);
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2) volatile);
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 ...));
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2));
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2) const);
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2) volatile);
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 ...));
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2));
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2) const);
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2) volatile);
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 ...));
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2));
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2) const);
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2) volatile);
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 ...));
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...));
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) volatile);
-template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...));
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) volatile);
-template <class R, class T , 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 >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const volatile);
+namespace boost {
+template< typename T, typename U > struct is_same : ::boost::integral_constant<bool,false> { };
+template< typename T > struct is_same< T,T > : ::boost::integral_constant<bool,true> { };
-}
-}
@@ -76632,6 +74761,7 @@
+}
@@ -77415,7 +75545,6 @@
-namespace boost {
@@ -77429,49 +75558,18 @@
-namespace detail {
-template <bool>
-struct is_mem_fun_pointer_select
- : ::boost::type_traits::false_result
-{
-};
-template <>
-struct is_mem_fun_pointer_select<false>
-{
- template <typename T> struct result_
- {
-#pragma warning(push)
-#pragma warning(disable:6334)
- static T* make_t;
- typedef result_<T> self_type;
- static const bool value = ( 1 == sizeof(::boost::type_traits::is_mem_fun_pointer_tester(self_type::make_t)) );
-#pragma warning(pop)
- };
-};
-template <typename T>
-struct is_member_function_pointer_impl
- : is_mem_fun_pointer_select<
- ::boost::type_traits::ice_or<
- ::boost::is_reference<T>::value
- , ::boost::is_array<T>::value
- >::value
- >::template result_<T>
-{
-};
-template <typename T>
-struct is_member_function_pointer_impl<T&> : public false_type{};
@@ -77487,26 +75585,22 @@
+namespace boost { namespace mpl {
+template< std::size_t N > struct size_t;
+}}
-template<> struct is_member_function_pointer_impl< void > { static const bool value = (false); };
-template<> struct is_member_function_pointer_impl< void const > { static const bool value = (false); };
-template<> struct is_member_function_pointer_impl< void volatile > { static const bool value = (false); };
-template<> struct is_member_function_pointer_impl< void const volatile > { static const bool value = (false); };
-}
-template< typename T > struct is_member_function_pointer : ::boost::integral_constant<bool,::boost::detail::is_member_function_pointer_impl<T>::value> { };
-}
@@ -77718,13 +75812,21 @@
+namespace boost { namespace mpl {
+template< std::size_t N >
+struct size_t
+{
+ static const std::size_t value = N;
+ typedef size_t type;
+ typedef std::size_t value_type;
+ typedef integral_c_tag tag;
@@ -77740,12 +75842,23 @@
+ typedef boost::mpl::size_t< static_cast<std::size_t>((value + 1)) > next;
+ typedef boost::mpl::size_t< static_cast<std::size_t>((value - 1)) > prior;
+
+
+
+
+ operator std::size_t() const { return static_cast<std::size_t>(this->value); }
+};
+template< std::size_t N >
+std::size_t const boost::mpl::size_t< N >::value;
+}}
@@ -77799,23 +75912,52 @@
+#pragma warning(push)
+#pragma warning(disable: 4121 4512)
+namespace boost {
+template <typename T> struct alignment_of;
+namespace detail {
+#pragma warning(push)
+#pragma warning(disable:4324)
+template <typename T>
+struct alignment_of_hack
+{
+ char c;
+ T t;
+ alignment_of_hack();
+};
+#pragma warning(pop)
+template <unsigned A, unsigned S>
+struct alignment_logic
+{
+ static const std::size_t value = A < S ? A : S;
+};
+template< typename T >
+struct alignment_of_impl
+{
+
+
+
+
+
+ static const std::size_t value = (::boost::detail::alignment_logic< sizeof(::boost::detail::alignment_of_hack<T>) - sizeof(T), __alignof(T) >::value);
@@ -77831,12 +75973,20 @@
+};
+}
+template< typename T > struct alignment_of : ::boost::integral_constant<std::size_t,::boost::detail::alignment_of_impl<T>::value> { };
+template <typename T>
+struct alignment_of<T&>
+ : alignment_of<T*>
+{
+};
@@ -77847,14 +75997,20 @@
+template<> struct alignment_of<void> : ::boost::integral_constant<std::size_t,0> { };
+template<> struct alignment_of<void const> : ::boost::integral_constant<std::size_t,0> { };
+template<> struct alignment_of<void volatile> : ::boost::integral_constant<std::size_t,0> { };
+template<> struct alignment_of<void const volatile> : ::boost::integral_constant<std::size_t,0> { };
+}
+#pragma warning(pop)
@@ -78184,7 +76340,12 @@
+namespace boost { namespace mpl { namespace aux {
+template< typename T > struct value_type_wknd
+{
+ typedef typename T::value_type type;
+};
@@ -78193,6 +76354,7 @@
+}}}
@@ -78268,7 +76430,6 @@
-namespace boost {
@@ -78277,13 +76438,8 @@
-template< typename T > struct is_member_pointer : ::boost::integral_constant<bool,::boost::is_member_function_pointer<T>::value> { };
-template< typename T, typename U > struct is_member_pointer< U T::* > : ::boost::integral_constant<bool,true> { };
-template< typename T, typename U > struct is_member_pointer< U T::*const > : ::boost::integral_constant<bool,true> { };
-template< typename T, typename U > struct is_member_pointer< U T::*volatile > : ::boost::integral_constant<bool,true> { };
-template< typename T, typename U > struct is_member_pointer< U T::*const volatile > : ::boost::integral_constant<bool,true> { };
@@ -78334,12 +76490,14 @@
+namespace boost { namespace mpl {
+struct void_;
+}}
-}
@@ -78467,9 +76625,16 @@
+namespace boost { namespace mpl {
+struct na
+{
+ typedef na type;
+ enum { value = 0 };
+};
+}}
@@ -78530,25 +76695,54 @@
+namespace boost { namespace mpl {
+template< typename T >
+struct is_na
+ : false_
+{
+};
+template<>
+struct is_na<na>
+ : true_
+{
+};
+template< typename T >
+struct is_not_na
+ : true_
+{
+};
+template<>
+struct is_not_na<na>
+ : false_
+{
+};
+template< typename T, typename U > struct if_na
+{
+ typedef T type;
+};
+template< typename U > struct if_na<na,U>
+{
+ typedef U type;
+};
@@ -78572,6 +76766,7 @@
+}}
@@ -78731,8 +76926,16 @@
+namespace boost { namespace mpl {
+template<
+ typename T = na
+ , typename Tag = void_
+
+ >
+struct lambda;
+}}
@@ -79017,8 +77220,6 @@
-namespace boost {
-namespace detail {
@@ -79026,39 +77227,10 @@
-template <typename T> struct cv_traits_imp {};
-template <typename T>
-struct cv_traits_imp<T*>
-{
- static const bool is_const = false;
- static const bool is_volatile = false;
- typedef T unqualified_type;
-};
-template <typename T>
-struct cv_traits_imp<const T*>
-{
- static const bool is_const = true;
- static const bool is_volatile = false;
- typedef T unqualified_type;
-};
-template <typename T>
-struct cv_traits_imp<volatile T*>
-{
- static const bool is_const = false;
- static const bool is_volatile = true;
- typedef T unqualified_type;
-};
-template <typename T>
-struct cv_traits_imp<const volatile T*>
-{
- static const bool is_const = true;
- static const bool is_volatile = true;
- typedef T unqualified_type;
-};
@@ -79086,8 +77258,6 @@
-}
-}
@@ -79883,15 +78053,8 @@
-namespace boost {
-namespace detail{
-template <class T>
-struct rvalue_ref_filter_rem_cv
-{
- typedef typename boost::detail::cv_traits_imp<T*>::unqualified_type type;
-};
@@ -79905,17 +78068,11 @@
-}
-template< typename T > struct remove_cv { typedef typename boost::detail::rvalue_ref_filter_rem_cv<T>::type type; };
-template< typename T > struct remove_cv<T&> { typedef T& type; };
-template< typename T, std::size_t N > struct remove_cv<T const[N]> { typedef T type[N]; };
-template< typename T, std::size_t N > struct remove_cv<T volatile[N]> { typedef T type[N]; };
-template< typename T, std::size_t N > struct remove_cv<T const volatile[N]> { typedef T type[N]; };
@@ -79934,7 +78091,6 @@
-}
@@ -80689,18 +78845,12 @@
-namespace boost {
-namespace detail {
-template< typename T > struct is_pointer_helper
-{
- static const bool value = false;
-};
@@ -80709,13 +78859,9 @@
-template< typename T > struct is_pointer_helper<T*> { static const bool value = true; };
-template< typename T >
-struct is_pointer_impl
-{
@@ -80726,13 +78872,9 @@
- static const bool value = (::boost::type_traits::ice_and< ::boost::detail::is_pointer_helper<typename remove_cv<T>::type>::value , ::boost::type_traits::ice_not< ::boost::is_member_pointer<T>::value >::value >::value);
-};
-}
-template< typename T > struct is_pointer : ::boost::integral_constant<bool,::boost::detail::is_pointer_impl<T>::value> { };
@@ -80797,7 +78939,6 @@
-}
@@ -81777,30 +79918,16 @@
-namespace boost {
-namespace detail {
-template <typename T>
-struct is_scalar_impl
-{
- static const bool value = (::boost::type_traits::ice_or< ::boost::is_arithmetic<T>::value, ::boost::is_enum<T>::value, ::boost::is_pointer<T>::value, ::boost::is_member_pointer<T>::value >::value);
-};
-template <> struct is_scalar_impl<void>{ static const bool value = false; };
-template <> struct is_scalar_impl<void const>{ static const bool value = false; };
-template <> struct is_scalar_impl<void volatile>{ static const bool value = false; };
-template <> struct is_scalar_impl<void const volatile>{ static const bool value = false; };
-}
-template< typename T > struct is_scalar : ::boost::integral_constant<bool,::boost::detail::is_scalar_impl<T>::value> { };
-}
@@ -82861,26 +80988,14 @@
-namespace boost {
-template< typename T > struct is_POD;
-namespace detail {
-template <typename T> struct is_pod_impl
-{
- static const bool value = (::boost::type_traits::ice_or< ::boost::is_scalar<T>::value, ::boost::is_void<T>::value, (__is_pod(T) && __has_trivial_constructor(T)) >::value);
-};
-template <typename T, std::size_t sz>
-struct is_pod_impl<T[sz]>
- : is_pod_impl<T>
-{
-};
@@ -82950,20 +81065,12 @@
-template<> struct is_pod_impl< void > { static const bool value = (true); };
-template<> struct is_pod_impl< void const > { static const bool value = (true); };
-template<> struct is_pod_impl< void volatile > { static const bool value = (true); };
-template<> struct is_pod_impl< void const volatile > { static const bool value = (true); };
-}
-template< typename T > struct is_POD : ::boost::integral_constant<bool,::boost::detail::is_pod_impl<T>::value> { };
-template< typename T > struct is_pod : ::boost::integral_constant<bool,::boost::detail::is_pod_impl<T>::value> { };
-}
@@ -83381,17 +81488,12 @@
-namespace boost{
-template <bool x> struct STATIC_ASSERTION_FAILURE;
-template <> struct STATIC_ASSERTION_FAILURE<true> { enum { value = 1 }; };
-template<int x> struct static_assert_test{};
-}
@@ -84265,20 +82367,12 @@
-#pragma warning(push)
-#pragma warning(disable: 4121)
-namespace boost {
-namespace detail {
-class alignment_dummy;
-typedef void (*function_ptr)();
-typedef int (alignment_dummy::*member_ptr);
-typedef int (alignment_dummy::*member_function_ptr)();
@@ -84338,19 +82432,7 @@
-template <bool found, std::size_t target, class TestType>
-struct lower_alignment_helper
-{
- typedef char type;
- enum { value = true };
-};
-template <std::size_t target, class TestType>
-struct lower_alignment_helper<false,target,TestType>
-{
- enum { value = (alignment_of<TestType>::value == target) };
- typedef typename mpl::if_c<value, TestType, char>::type type;
-};
@@ -84364,24 +82446,9 @@
-template <typename T>
-struct has_one_T
-{
- T data;
-};
-template <std::size_t target>
-union lower_alignment
-{
- enum { found0 = false };
- typename lower_alignment_helper< found0,target,char >::type t0; enum { found1 = lower_alignment_helper<found0,target,char >::value }; typename lower_alignment_helper< found1,target,short >::type t1; enum { found2 = lower_alignment_helper<found1,target,short >::value }; typename lower_alignment_helper< found2,target,int >::type t2; enum { found3 = lower_alignment_helper<found2,target,int >::value }; typename lower_alignment_helper< found3,target,long >::type t3; enum { found4 = lower_alignment_helper<found3,target,long >::value }; typename lower_alignment_helper< found4,target,::boost::long_long_type >::type t4; enum { found5 = lower_alignment_helper<found4,target,::boost::long_long_type >::value }; typename lower_alignment_helper< found5,target,float >::type t5; enum { found6 = lower_alignment_helper<found5,target,float >::value }; typename lower_alignment_helper< found6,target,double >::type t6; enum { found7 = lower_alignment_helper<found6,target,double >::value }; typename lower_alignment_helper< fou
nd7,target,long double >::type t7; enum { found8 = lower_alignment_helper<found7,target,long double >::value }; typename lower_alignment_helper< found8,target,void* >::type t8; enum { found9 = lower_alignment_helper<found8,target,void* >::value }; typename lower_alignment_helper< found9,target,function_ptr >::type t9; enum { found10 = lower_alignment_helper<found9,target,function_ptr >::value }; typename lower_alignment_helper< found10,target,member_ptr >::type t10; enum { found11 = lower_alignment_helper<found10,target,member_ptr >::value }; typename lower_alignment_helper< found11,target,member_function_ptr >::type t11; enum { found12 = lower_alignment_helper<found11,target,member_function_ptr >::value }; typename lower_alignment_helper< found12,target,boost::detail::has_one_T< char > >::type t12; enum { found13 = lower_alignment_helper<found12,target,boost::detail::has_one_T< char > >::value }; typename lower_alignment_helper< found13,target,boost::detail::has_one_T< short > >::type t13; enum { found14 =
lower_alignment_helper<found13,target,boost::detail::has_one_T< short > >::value }; typename lower_alignment_helper< found14,target,boost::detail::has_one_T< int > >::type t14; enum { found15 = lower_alignment_helper<found14,target,boost::detail::has_one_T< int > >::value }; typename lower_alignment_helper< found15,target,boost::detail::has_one_T< long > >::type t15; enum { found16 = lower_alignment_helper<found15,target,boost::detail::has_one_T< long > >::value }; typename lower_alignment_helper< found16,target,boost::detail::has_one_T< ::boost::long_long_type > >::type t16; enum { found17 = lower_alignment_helper<found16,target,boost::detail::has_one_T< ::boost::long_long_type > >::value }; typename lower_alignment_helper< found17,target,boost::detail::has_one_T< float > >::type t17; enum { found18 = lower_alignment_helper<found17,target,boost::detail::has_one_T< float > >::value }; typename lower_alignment_helper< found18,target,boost::detail::has_one_T< double > >::type t18; enum { found19 = lower_alignm
ent_helper<found18,target,boost::detail::has_one_T< double > >::value }; typename lower_alignment_helper< found19,target,boost::detail::has_one_T< long double > >::type t19; enum { found20 = lower_alignment_helper<found19,target,boost::detail::has_one_T< long double > >::value }; typename lower_alignment_helper< found20,target,boost::detail::has_one_T< void* > >::type t20; enum { found21 = lower_alignment_helper<found20,target,boost::detail::has_one_T< void* > >::value }; typename lower_alignment_helper< found21,target,boost::detail::has_one_T< function_ptr > >::type t21; enum { found22 = lower_alignment_helper<found21,target,boost::detail::has_one_T< function_ptr > >::value }; typename lower_alignment_helper< found22,target,boost::detail::has_one_T< member_ptr > >::type t22; enum { found23 = lower_alignment_helper<found22,target,boost::detail::has_one_T< member_ptr > >::value }; typename lower_alignment_helper< found23,target,boost::detail::has_one_T< member_function_ptr > >::type t23; enum { found24 = lowe
r_alignment_helper<found23,target,boost::detail::has_one_T< member_function_ptr > >::value };
-};
-union max_align
-{
- char t0; short t1; int t2; long t3; ::boost::long_long_type t4; float t5; double t6; long double t7; void* t8; function_ptr t9; member_ptr t10; member_function_ptr t11; boost::detail::has_one_T< char > t12; boost::detail::has_one_T< short > t13; boost::detail::has_one_T< int > t14; boost::detail::has_one_T< long > t15; boost::detail::has_one_T< ::boost::long_long_type > t16; boost::detail::has_one_T< float > t17; boost::detail::has_one_T< double > t18; boost::detail::has_one_T< long double > t19; boost::detail::has_one_T< void* > t20; boost::detail::has_one_T< function_ptr > t21; boost::detail::has_one_T< member_ptr > t22; boost::detail::has_one_T< member_function_ptr > t23;
-};
@@ -84390,11 +82457,6 @@
-template<std::size_t TAlign, std::size_t Align>
-struct is_aligned
-{
- static const bool value = (TAlign >= Align) & (TAlign % Align == 0);
-};
@@ -84407,46 +82469,18 @@
-}
-template<std::size_t Align>
-struct is_pod< ::boost::detail::lower_alignment<Align> >
-{
- static const std::size_t value = true;
-};
-namespace detail{
-template <std::size_t Align>
-class type_with_alignment_imp
-{
- typedef ::boost::detail::lower_alignment<Align> t1;
- typedef typename mpl::if_c<
- ::boost::detail::is_aligned< ::boost::alignment_of<t1>::value,Align >::value
- , t1
- , ::boost::detail::max_align
- >::type align_t;
- static const std::size_t found = alignment_of<align_t>::value;
- typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)(found >= Align) >)> boost_static_assert_typedef_0;
- typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)(found % Align == 0) >)> boost_static_assert_typedef_1;
- public:
- typedef align_t type;
-};
-}
-template <std::size_t Align>
-class type_with_alignment
- : public ::boost::detail::type_with_alignment_imp<Align>
-{
-};
@@ -84489,81 +82523,8 @@
-namespace align {
-struct __declspec(align(8)) a8 {
- char m[8];
- typedef a8 type;
-};
-struct __declspec(align(16)) a16 {
- char m[16];
- typedef a16 type;
-};
-struct __declspec(align(32)) a32 {
- char m[32];
- typedef a32 type;
-};
-struct __declspec(align(64)) a64
-{
- char m[64];
- typedef a64 type;
-};
-struct __declspec(align(128)) a128 {
- char m[128];
- typedef a128 type;
-};
-}
-template<> class type_with_alignment<8>
-{
- typedef mpl::if_c<
- ::boost::alignment_of<boost::detail::max_align>::value < 8,
- align::a8,
- boost::detail::type_with_alignment_imp<8> >::type t1;
-public:
- typedef t1::type type;
-};
-template<> class type_with_alignment<16>
-{
- typedef mpl::if_c<
- ::boost::alignment_of<boost::detail::max_align>::value < 16,
- align::a16,
- boost::detail::type_with_alignment_imp<16> >::type t1;
-public:
- typedef t1::type type;
-};
-template<> class type_with_alignment<32>
-{
- typedef mpl::if_c<
- ::boost::alignment_of<boost::detail::max_align>::value < 32,
- align::a32,
- boost::detail::type_with_alignment_imp<32> >::type t1;
-public:
- typedef t1::type type;
-};
-template<> class type_with_alignment<64> {
- typedef mpl::if_c<
- ::boost::alignment_of<boost::detail::max_align>::value < 64,
- align::a64,
- boost::detail::type_with_alignment_imp<64> >::type t1;
-public:
- typedef t1::type type;
-};
-template<> class type_with_alignment<128> {
- typedef mpl::if_c<
- ::boost::alignment_of<boost::detail::max_align>::value < 128,
- align::a128,
- boost::detail::type_with_alignment_imp<128> >::type t1;
-public:
- typedef t1::type type;
-};
-namespace detail {
-template<> struct is_pod_impl< ::boost::align::a8 > { static const bool value = (true); };
-template<> struct is_pod_impl< ::boost::align::a16 > { static const bool value = (true); };
-template<> struct is_pod_impl< ::boost::align::a32 > { static const bool value = (true); };
-template<> struct is_pod_impl< ::boost::align::a64 > { static const bool value = (true); };
-template<> struct is_pod_impl< ::boost::align::a128 > { static const bool value = (true); };
-}
@@ -84610,10 +82571,8 @@
-}
-#pragma warning(pop)
@@ -85360,46 +83319,24 @@
-namespace boost { namespace mpl {
-template<
- typename C = na
- , typename F1 = na
- , typename F2 = na
- >
-struct eval_if
- : if_<C,F1,F2>::type
-{
-
-};
-template<
- bool C
- , typename F1
- , typename F2
- >
-struct eval_if_c
- : if_c<C,F1,F2>::type
-{
-};
-template<> struct eval_if< na , na , na > { template< typename T1 , typename T2 , typename T3 , typename T4 =na , typename T5 =na > struct apply : eval_if< T1 , T2 , T3 > { }; }; template< typename Tag > struct lambda< eval_if< na , na , na > , Tag > { typedef false_ is_le; typedef eval_if< na , na , na > result_; typedef eval_if< na , na , na > type; };
-}}
@@ -85769,30 +83706,10 @@
-namespace boost { namespace mpl {
-template<
- typename T = na
- >
-struct identity
-{
- typedef T type;
-
-};
-template<
- typename T = na
- >
-struct make_identity
-{
- typedef identity<T> type;
-
-};
-template<> struct identity< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : identity< T1 > { }; }; template< typename Tag > struct lambda< identity< na > , Tag > { typedef false_ is_le; typedef identity< na > result_; typedef identity< na > type; };
-template<> struct make_identity< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : make_identity< T1 > { }; }; template< typename Tag > struct lambda< make_identity< na > , Tag > { typedef false_ is_le; typedef make_identity< na > result_; typedef make_identity< na > type; };
-}}
@@ -86515,62 +84432,22 @@
-namespace boost {
-namespace detail { namespace aligned_storage {
-static const std::size_t alignment_of_max_align = ::boost::alignment_of<max_align>::value;
-template <
- std::size_t size_
- , std::size_t alignment_
->
-struct aligned_storage_imp
-{
- union data_t
- {
- char buf[size_];
- typename mpl::eval_if_c<
- alignment_ == std::size_t(-1)
- , mpl::identity<detail::max_align>
- , type_with_alignment<alignment_>
- >::type align_;
- } data_;
- void* address() const { return const_cast<aligned_storage_imp*>(this); }
-};
-template< std::size_t alignment_ >
-struct aligned_storage_imp<0u,alignment_>
-{
-
- void* address() const { return 0; }
-};
-}}
-template <
- std::size_t size_
- , std::size_t alignment_ = std::size_t(-1)
->
-class aligned_storage :
- private
- detail::aligned_storage::aligned_storage_imp<size_, alignment_>
-{
-
-public:
- typedef detail::aligned_storage::aligned_storage_imp<size_, alignment_> type;
- static const std::size_t size = size_;
- static const std::size_t alignment = ( alignment_ == std::size_t(-1) ? ::boost::detail::aligned_storage::alignment_of_max_align : alignment_ );
@@ -86581,36 +84458,17 @@
-public:
- aligned_storage(const aligned_storage&);
- aligned_storage& operator=(const aligned_storage&);
-public:
- aligned_storage()
- {
- }
- ~aligned_storage()
- {
- }
-public:
- void* address()
- {
- return static_cast<type*>(this)->address();
- }
- const void* address() const
- {
- return static_cast<const type*>(this)->address();
- }
@@ -86618,7 +84476,6 @@
-};
@@ -86638,16 +84495,9 @@
-template <std::size_t size_, std::size_t alignment_>
-struct is_pod<boost::detail::aligned_storage::aligned_storage_imp<size_,alignment_> >
- : ::boost::integral_constant<bool,true>
-{
-
-};
-}
@@ -87588,12 +85438,8 @@
-namespace boost {
- template <typename T>
- typename add_rvalue_reference<T>::type declval();
-}
@@ -87676,49 +85522,24 @@
-namespace boost {
- 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;
- };
- template<typename T>
- struct common_type<T, void, void>
- {
- typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)(sizeof(T) > 0) >)> boost_static_assert_typedef_2;
- public:
- typedef T type;
- };
-namespace type_traits_detail {
- template <class T, class U>
- struct common_type_2
- {
- private:
- typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)(sizeof(T) > 0) >)> boost_static_assert_typedef_3;
- typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)(sizeof(U) > 0) >)> boost_static_assert_typedef_4;
- static bool declval_bool();
- static typename add_rvalue_reference<T>::type declval_T();
- static typename add_rvalue_reference<U>::type declval_U();
- static typename add_rvalue_reference<bool>::type declval_b();
@@ -87730,27 +85551,14 @@
- public:
- typedef typename boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(declval_b() ? declval_T() : declval_U()))>::type type;
- };
- template <class T>
- struct common_type_2<T, T>
- {
- typedef T type;
- };
- }
- template <class T, class U>
- struct common_type<T, U, void>
- : type_traits_detail::common_type_2<T,U>
- { };
@@ -87761,7 +85569,6 @@
-}
@@ -87916,14 +85723,8 @@
-namespace boost {
-template <bool b, class T, class U>
-struct conditional : public mpl::if_c<b, T, U>
-{
-};
-}
@@ -88662,17 +86463,55 @@
+namespace boost { namespace mpl {
+template<
+ bool C
+ , typename T1
+ , typename T2
+ >
+struct if_c
+{
+ typedef T1 type;
+};
+template<
+ typename T1
+ , typename T2
+ >
+struct if_c<false,T1,T2>
+{
+ typedef T2 type;
+};
+template<
+ typename T1 = na
+ , typename T2 = na
+ , typename T3 = na
+ >
+struct if_
+{
+ private:
+
+ typedef if_c<
+ static_cast<bool>(T1::value)
+ , T2
+ , T3
+ > almost_type_;
+
+ public:
+ typedef typename almost_type_::type type;
+
+
+};
@@ -88730,7 +86569,9 @@
+template<> struct if_< na , na , na > { template< typename T1 , typename T2 , typename T3 , typename T4 =na , typename T5 =na > struct apply : if_< T1 , T2 , T3 > { }; }; template< typename Tag > struct lambda< if_< na , na , na > , Tag > { typedef false_ is_le; typedef if_< na , na , na > result_; typedef if_< na , na , na > type; };
+}}
@@ -89022,24 +86863,13 @@
-namespace boost {
-template< typename T > struct remove_bounds { typedef T type; };
-template< typename T, std::size_t N > struct remove_bounds<T[N]> { typedef T type; };
-template< typename T, std::size_t N > struct remove_bounds<T const[N]> { typedef T const type; };
-template< typename T, std::size_t N > struct remove_bounds<T volatile[N]> { typedef T volatile type; };
-template< typename T, std::size_t N > struct remove_bounds<T const volatile[N]> { typedef T const volatile type; };
-template< typename T > struct remove_bounds<T[]> { typedef T type; };
-template< typename T > struct remove_bounds<T const[]> { typedef T const type; };
-template< typename T > struct remove_bounds<T volatile[]> { typedef T volatile type; };
-template< typename T > struct remove_bounds<T const volatile[]> { typedef T const volatile type; };
-}
@@ -89334,27 +87164,7 @@
-namespace boost
-{
- template< class T >
- struct decay
- {
- private:
- typedef typename remove_reference<T>::type Ty;
- public:
- typedef typename mpl::eval_if<
- is_array<Ty>,
- mpl::identity<typename remove_bounds<Ty>::type*>,
- typename mpl::eval_if<
- is_function<Ty>,
- add_pointer<Ty>,
- mpl::identity<Ty>
- >
- >::type type;
- };
-
-}
@@ -89891,9 +87701,7 @@
-namespace boost {
-namespace detail{
@@ -89904,119 +87712,26 @@
-template <class T, std::size_t N>
-struct extent_imp
-{
- static const std::size_t value = 0;
-};
-template <class T, std::size_t R, std::size_t N>
-struct extent_imp<T[R], N>
-{
- static const std::size_t value = (::boost::detail::extent_imp<T, N-1>::value);
-};
-template <class T, std::size_t R, std::size_t N>
-struct extent_imp<T const[R], N>
-{
- static const std::size_t value = (::boost::detail::extent_imp<T, N-1>::value);
-};
-template <class T, std::size_t R, std::size_t N>
-struct extent_imp<T volatile[R], N>
-{
- static const std::size_t value = (::boost::detail::extent_imp<T, N-1>::value);
-};
-template <class T, std::size_t R, std::size_t N>
-struct extent_imp<T const volatile[R], N>
-{
- static const std::size_t value = (::boost::detail::extent_imp<T, N-1>::value);
-};
-template <class T, std::size_t R>
-struct extent_imp<T[R],0>
-{
- static const std::size_t value = R;
-};
-template <class T, std::size_t R>
-struct extent_imp<T const[R], 0>
-{
- static const std::size_t value = R;
-};
-template <class T, std::size_t R>
-struct extent_imp<T volatile[R], 0>
-{
- static const std::size_t value = R;
-};
-template <class T, std::size_t R>
-struct extent_imp<T const volatile[R], 0>
-{
- static const std::size_t value = R;
-};
-template <class T, std::size_t N>
-struct extent_imp<T[], N>
-{
- static const std::size_t value = (::boost::detail::extent_imp<T, N-1>::value);
-};
-template <class T, std::size_t N>
-struct extent_imp<T const[], N>
-{
- static const std::size_t value = (::boost::detail::extent_imp<T, N-1>::value);
-};
-template <class T, std::size_t N>
-struct extent_imp<T volatile[], N>
-{
- static const std::size_t value = (::boost::detail::extent_imp<T, N-1>::value);
-};
-template <class T, std::size_t N>
-struct extent_imp<T const volatile[], N>
-{
- static const std::size_t value = (::boost::detail::extent_imp<T, N-1>::value);
-};
-template <class T>
-struct extent_imp<T[], 0>
-{
- static const std::size_t value = 0;
-};
-template <class T>
-struct extent_imp<T const[], 0>
-{
- static const std::size_t value = 0;
-};
-template <class T>
-struct extent_imp<T volatile[], 0>
-{
- static const std::size_t value = 0;
-};
-template <class T>
-struct extent_imp<T const volatile[], 0>
-{
- static const std::size_t value = 0;
-};
-}
-template <class T, std::size_t N = 0>
-struct extent
- : public ::boost::integral_constant<std::size_t, ::boost::detail::extent_imp<T,N>::value>
-{
-
-};
-}
@@ -90572,41 +88287,14 @@
-namespace boost {
-namespace type_traits { namespace detail {
-template<class T>
-struct floating_point_promotion
-{
- typedef T type;
-};
-template<>
-struct floating_point_promotion<float>
-{
- typedef double type;
-};
-template<>
-struct floating_point_promotion<float const>
-{
- typedef double const type;
-};
-template<>
-struct floating_point_promotion<float volatile>
-{
- typedef double volatile type;
-};
-template<>
-struct floating_point_promotion<float const volatile>
-{
- typedef double const volatile type;
-};
@@ -90627,10 +88315,7 @@
-} }
-template< typename T > struct floating_point_promotion { typedef typename boost::type_traits::detail::floating_point_promotion<T>::type type; };
-}
@@ -90924,162 +88609,22 @@
-namespace boost {
-namespace detail {
-template<typename Function> struct function_traits_helper;
-template<typename R>
-struct function_traits_helper<R (*)(void)>
-{
- static const unsigned arity = 0;
- typedef R result_type;
-};
-template<typename R, typename T1>
-struct function_traits_helper<R (*)(T1)>
-{
- static const unsigned arity = 1;
- typedef R result_type;
- typedef T1 arg1_type;
- typedef T1 argument_type;
-};
-template<typename R, typename T1, typename T2>
-struct function_traits_helper<R (*)(T1, T2)>
-{
- static const unsigned arity = 2;
- typedef R result_type;
- typedef T1 arg1_type;
- typedef T2 arg2_type;
- typedef T1 first_argument_type;
- typedef T2 second_argument_type;
-};
-template<typename R, typename T1, typename T2, typename T3>
-struct function_traits_helper<R (*)(T1, T2, T3)>
-{
- static const unsigned arity = 3;
- typedef R result_type;
- typedef T1 arg1_type;
- typedef T2 arg2_type;
- typedef T3 arg3_type;
-};
-template<typename R, typename T1, typename T2, typename T3, typename T4>
-struct function_traits_helper<R (*)(T1, T2, T3, T4)>
-{
- static const unsigned arity = 4;
- typedef R result_type;
- typedef T1 arg1_type;
- typedef T2 arg2_type;
- typedef T3 arg3_type;
- typedef T4 arg4_type;
-};
-template<typename R, typename T1, typename T2, typename T3, typename T4,
- typename T5>
-struct function_traits_helper<R (*)(T1, T2, T3, T4, T5)>
-{
- static const unsigned arity = 5;
- typedef R result_type;
- typedef T1 arg1_type;
- typedef T2 arg2_type;
- typedef T3 arg3_type;
- typedef T4 arg4_type;
- typedef T5 arg5_type;
-};
-template<typename R, typename T1, typename T2, typename T3, typename T4,
- typename T5, typename T6>
-struct function_traits_helper<R (*)(T1, T2, T3, T4, T5, T6)>
-{
- static const unsigned arity = 6;
- typedef R result_type;
- typedef T1 arg1_type;
- typedef T2 arg2_type;
- typedef T3 arg3_type;
- typedef T4 arg4_type;
- typedef T5 arg5_type;
- typedef T6 arg6_type;
-};
-template<typename R, typename T1, typename T2, typename T3, typename T4,
- typename T5, typename T6, typename T7>
-struct function_traits_helper<R (*)(T1, T2, T3, T4, T5, T6, T7)>
-{
- static const unsigned arity = 7;
- typedef R result_type;
- typedef T1 arg1_type;
- typedef T2 arg2_type;
- typedef T3 arg3_type;
- typedef T4 arg4_type;
- typedef T5 arg5_type;
- typedef T6 arg6_type;
- typedef T7 arg7_type;
-};
-template<typename R, typename T1, typename T2, typename T3, typename T4,
- typename T5, typename T6, typename T7, typename T8>
-struct function_traits_helper<R (*)(T1, T2, T3, T4, T5, T6, T7, T8)>
-{
- static const unsigned arity = 8;
- typedef R result_type;
- typedef T1 arg1_type;
- typedef T2 arg2_type;
- typedef T3 arg3_type;
- typedef T4 arg4_type;
- typedef T5 arg5_type;
- typedef T6 arg6_type;
- typedef T7 arg7_type;
- typedef T8 arg8_type;
-};
-template<typename R, typename T1, typename T2, typename T3, typename T4,
- typename T5, typename T6, typename T7, typename T8, typename T9>
-struct function_traits_helper<R (*)(T1, T2, T3, T4, T5, T6, T7, T8, T9)>
-{
- static const unsigned arity = 9;
- typedef R result_type;
- typedef T1 arg1_type;
- typedef T2 arg2_type;
- typedef T3 arg3_type;
- typedef T4 arg4_type;
- typedef T5 arg5_type;
- typedef T6 arg6_type;
- typedef T7 arg7_type;
- typedef T8 arg8_type;
- typedef T9 arg9_type;
-};
-template<typename R, typename T1, typename T2, typename T3, typename T4,
- typename T5, typename T6, typename T7, typename T8, typename T9,
- typename T10>
-struct function_traits_helper<R (*)(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)>
-{
- static const unsigned arity = 10;
- typedef R result_type;
- typedef T1 arg1_type;
- typedef T2 arg2_type;
- typedef T3 arg3_type;
- typedef T4 arg4_type;
- typedef T5 arg5_type;
- typedef T6 arg6_type;
- typedef T7 arg7_type;
- typedef T8 arg8_type;
- typedef T9 arg9_type;
- typedef T10 arg10_type;
-};
-}
-template<typename Function>
-struct function_traits :
- public boost::detail::function_traits_helper<typename boost::add_pointer<Function>::type>
-{
-};
@@ -91142,7 +88687,6 @@
-}
@@ -91161,20 +88705,15 @@
-#pragma once
-#pragma pack(push,8)
-#pragma warning(push,3)
-
-
@@ -91186,90 +88725,32 @@
-namespace std {
-
-
-typedef void (__cdecl * new_handler) ();
-
-
-struct nothrow_t
- {
- };
-extern const nothrow_t nothrow;
-
-
- new_handler __cdecl set_new_handler(new_handler)
- throw ();
-}
-
-void __cdecl operator delete(void *) throw ();
- void *__cdecl operator new(size_t _Size) throw (...);
-
-
-inline void *__cdecl operator new(size_t, void *_Where) throw ()
- {
- return (_Where);
- }
-inline void __cdecl operator delete(void *, void *) throw ()
- {
- }
-
-
-
-inline void *__cdecl operator new[](size_t, void *_Where) throw ()
- {
- return (_Where);
- }
-inline void __cdecl operator delete[](void *, void *) throw ()
- {
- }
-
-void __cdecl operator delete[](void *) throw ();
- void *__cdecl operator new[](size_t _Size)
- throw (...);
-
-
- void *__cdecl operator new(size_t _Size, const std::nothrow_t&)
- throw ();
- void *__cdecl operator new[](size_t _Size, const std::nothrow_t&)
- throw ();
-void __cdecl operator delete(void *, const std::nothrow_t&)
- throw ();
-void __cdecl operator delete[](void *, const std::nothrow_t&)
- throw ();
-
-
-using std::new_handler;
-
-
-#pragma warning(pop)
-#pragma pack(pop)
@@ -92143,83 +89624,13 @@
-namespace boost {
-namespace detail {
- template <class U, U x>
- struct test;
- template <typename T>
- struct has_new_operator_impl {
- template<class U>
- static type_traits::yes_type check_sig1(
- U*,
- test<
- void *(*)(std::size_t),
- &U::operator new
- >* = 0
- );
- template<class U>
- static type_traits::no_type check_sig1(...);
- template<class U>
- static type_traits::yes_type check_sig2(
- U*,
- test<
- void *(*)(std::size_t, const std::nothrow_t&),
- &U::operator new
- >* = 0
- );
- template<class U>
- static type_traits::no_type check_sig2(...);
- template<class U>
- static type_traits::yes_type check_sig3(
- U*,
- test<
- void *(*)(std::size_t, void*),
- &U::operator new
- >* = 0
- );
- template<class U>
- static type_traits::no_type check_sig3(...);
- template<class U>
- static type_traits::yes_type check_sig4(
- U*,
- test<
- void *(*)(std::size_t),
- &U::operator new[]
- >* = 0
- );
- template<class U>
- static type_traits::no_type check_sig4(...);
-
- template<class U>
- static type_traits::yes_type check_sig5(
- U*,
- test<
- void *(*)(std::size_t, const std::nothrow_t&),
- &U::operator new[]
- >* = 0
- );
- template<class U>
- static type_traits::no_type check_sig5(...);
- template<class U>
- static type_traits::yes_type check_sig6(
- U*,
- test<
- void *(*)(std::size_t, void*),
- &U::operator new[]
- >* = 0
- );
- template<class U>
- static type_traits::no_type check_sig6(...);
-
-
-
@@ -92227,29 +89638,10 @@
-
- #pragma warning(push)
- #pragma warning(disable:6334)
-
- static const unsigned s1 = sizeof(check_sig1<T>(0));
- static const unsigned s2 = sizeof(check_sig2<T>(0));
- static const unsigned s3 = sizeof(check_sig3<T>(0));
- static const unsigned s4 = sizeof(check_sig4<T>(0));
- static const unsigned s5 = sizeof(check_sig5<T>(0));
- static const unsigned s6 = sizeof(check_sig6<T>(0));
-
- #pragma warning(pop)
-
-
- static const bool value = (::boost::type_traits::ice_or< (s1 == sizeof(type_traits::yes_type)), (s2 == sizeof(type_traits::yes_type)), (s3 == sizeof(type_traits::yes_type)), (s4 == sizeof(type_traits::yes_type)), (s5 == sizeof(type_traits::yes_type)), (s6 == sizeof(type_traits::yes_type)) >::value);
- };
-}
-template< typename T > struct has_new_operator : ::boost::integral_constant<bool,::boost::detail::has_new_operator_impl<T>::value> { };
-}
@@ -92489,6 +89881,7 @@
+namespace boost {
@@ -92496,14 +89889,26 @@
+template< typename T > struct is_integral : ::boost::integral_constant<bool,false> { };
+template<> struct is_integral< unsigned char > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned char const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned char volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned char const volatile > : ::boost::integral_constant<bool,true> { };
+template<> struct is_integral< unsigned short > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned short const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned short volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned short const volatile > : ::boost::integral_constant<bool,true> { };
+template<> struct is_integral< unsigned int > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned int const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned int volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned int const volatile > : ::boost::integral_constant<bool,true> { };
+template<> struct is_integral< unsigned long > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned long const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned long volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned long const volatile > : ::boost::integral_constant<bool,true> { };
+template<> struct is_integral< signed char > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed char const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed char volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed char const volatile > : ::boost::integral_constant<bool,true> { };
+template<> struct is_integral< signed short > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed short const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed short volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed short const volatile > : ::boost::integral_constant<bool,true> { };
+template<> struct is_integral< signed int > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed int const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed int volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed int const volatile > : ::boost::integral_constant<bool,true> { };
+template<> struct is_integral< signed long > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed long const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed long volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed long const volatile > : ::boost::integral_constant<bool,true> { };
+template<> struct is_integral< bool > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< bool const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< bool volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< bool const volatile > : ::boost::integral_constant<bool,true> { };
+template<> struct is_integral< char > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< char const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< char volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< char const volatile > : ::boost::integral_constant<bool,true> { };
+template<> struct is_integral< wchar_t > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< wchar_t const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< wchar_t volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< wchar_t const volatile > : ::boost::integral_constant<bool,true> { };
@@ -92522,6 +89927,8 @@
+template<> struct is_integral< ::boost::ulong_long_type > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< ::boost::ulong_long_type const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< ::boost::ulong_long_type volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< ::boost::ulong_long_type const volatile > : ::boost::integral_constant<bool,true> { };
+template<> struct is_integral< ::boost::long_long_type > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< ::boost::long_long_type const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< ::boost::long_long_type volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< ::boost::long_long_type const volatile > : ::boost::integral_constant<bool,true> { };
@@ -92529,6 +89936,7 @@
+}
@@ -93293,9 +90701,15 @@
+namespace boost {
+template< typename T > struct is_float : ::boost::integral_constant<bool,false> { };
+template<> struct is_float< float > : ::boost::integral_constant<bool,true> { }; template<> struct is_float< float const > : ::boost::integral_constant<bool,true> { }; template<> struct is_float< float volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_float< float const volatile > : ::boost::integral_constant<bool,true> { };
+template<> struct is_float< double > : ::boost::integral_constant<bool,true> { }; template<> struct is_float< double const > : ::boost::integral_constant<bool,true> { }; template<> struct is_float< double volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_float< double const volatile > : ::boost::integral_constant<bool,true> { };
+template<> struct is_float< long double > : ::boost::integral_constant<bool,true> { }; template<> struct is_float< long double const > : ::boost::integral_constant<bool,true> { }; template<> struct is_float< long double volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_float< long double const volatile > : ::boost::integral_constant<bool,true> { };
+}
@@ -93990,7 +91404,6 @@
-namespace boost {
@@ -93998,20 +91411,14 @@
-namespace detail{
-template <class T>
-struct is_const_rvalue_filter
-{
- static const bool value = ::boost::detail::cv_traits_imp<T*>::is_const;
-};
@@ -94019,11 +91426,8 @@
-}
-template< typename T > struct is_const : ::boost::integral_constant<bool,::boost::detail::is_const_rvalue_filter<T>::value> { };
-template< typename T > struct is_const< T& > : ::boost::integral_constant<bool,false> { };
@@ -94105,7 +91509,6 @@
-}
@@ -94169,18 +91572,28 @@
+namespace boost {
+namespace detail {
+template< typename T >
+struct is_arithmetic_impl
+{
+ static const bool value = (::boost::type_traits::ice_or< ::boost::is_integral<T>::value, ::boost::is_float<T>::value >::value);
+};
+}
+template< typename T > struct is_arithmetic : ::boost::integral_constant<bool,::boost::detail::is_arithmetic_impl<T>::value> { };
+}
@@ -95232,6 +92645,7 @@
+namespace boost {
@@ -95335,18 +92749,11 @@
-namespace boost {
-namespace detail{
-template <class T>
-struct is_volatile_rval_filter
-{
- static const bool value = ::boost::detail::cv_traits_imp<T*>::is_volatile;
-};
@@ -95358,15 +92765,12 @@
-}
-template< typename T > struct is_volatile : ::boost::integral_constant<bool,::boost::detail::is_volatile_rval_filter<T>::value> { };
-template< typename T > struct is_volatile< T& > : ::boost::integral_constant<bool,false> { };
@@ -95388,9 +92792,11 @@
+template< typename T > struct is_enum : ::boost::integral_constant<bool,__is_enum(T)> { };
+}
@@ -95441,7 +92847,6 @@
-}
@@ -96301,21 +93706,11 @@
-namespace boost {
-namespace detail {
-template <typename T>
-struct has_trivial_assign_impl
-{
- static const bool value = (::boost::type_traits::ice_and< ::boost::type_traits::ice_or< ::boost::is_pod<T>::value, __has_trivial_assign(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);
-};
-}
-template< typename T > struct has_trivial_assign : ::boost::integral_constant<bool,::boost::detail::has_trivial_assign_impl<T>::value> { };
-}
@@ -97069,28 +94464,25 @@
-namespace boost {
-namespace detail{
-
-template <class T>
-struct has_nothrow_assign_imp{
- static const bool value = (::boost::type_traits::ice_or< ::boost::has_trivial_assign<T>::value, __has_nothrow_assign(T) >::value);
-};
-
-}
-
-template< typename T > struct has_nothrow_assign : ::boost::integral_constant<bool,::boost::detail::has_nothrow_assign_imp<T>::value> { };
-
-}
+namespace boost {
+template< typename T > struct is_array : ::boost::integral_constant<bool,false> { };
+template< typename T, std::size_t N > struct is_array< T[N] > : ::boost::integral_constant<bool,true> { };
+template< typename T, std::size_t N > struct is_array< T const[N] > : ::boost::integral_constant<bool,true> { };
+template< typename T, std::size_t N > struct is_array< T volatile[N] > : ::boost::integral_constant<bool,true> { };
+template< typename T, std::size_t N > struct is_array< T const volatile[N] > : ::boost::integral_constant<bool,true> { };
+template< typename T > struct is_array< T[] > : ::boost::integral_constant<bool,true> { };
+template< typename T > struct is_array< T const[] > : ::boost::integral_constant<bool,true> { };
+template< typename T > struct is_array< T volatile[] > : ::boost::integral_constant<bool,true> { };
+template< typename T > struct is_array< T const volatile[] > : ::boost::integral_constant<bool,true> { };
@@ -97133,6 +94525,7 @@
+}
@@ -97390,947 +94783,2614 @@
+namespace boost {
+namespace type_traits {
+no_type __cdecl is_mem_fun_pointer_tester(...);
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)());
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)() const);
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)() volatile);
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)() const volatile);
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( ...));
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( ...) const);
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( ...) volatile);
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( ...) const volatile);
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)());
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)() const);
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)() volatile);
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)() const volatile);
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( ...));
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( ...) const);
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( ...) volatile);
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( ...) const volatile);
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)());
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)() const);
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)() volatile);
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)() const volatile);
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( ...));
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( ...) const);
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( ...) volatile);
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( ...) const volatile);
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)());
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)() const);
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)() volatile);
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)() const volatile);
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( ...));
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( ...) const);
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( ...) volatile);
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( ...) const volatile);
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0));
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0) const);
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0) volatile);
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0) const volatile);
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 ...));
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 ...) const);
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 ...) volatile);
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 ...) const volatile);
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0));
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0) const);
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0) volatile);
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0) const volatile);
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 ...));
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 ...) const);
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 ...) volatile);
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 ...) const volatile);
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0));
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0) const);
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0) volatile);
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0) const volatile);
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 ...));
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 ...) const);
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 ...) volatile);
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 ...) const volatile);
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0));
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0) const);
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0) volatile);
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0) const volatile);
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 ...));
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 ...) const);
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 ...) volatile);
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 ...) const volatile);
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1));
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1) const);
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1) volatile);
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1) const volatile);
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 ...));
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 ...) const);
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 ...) volatile);
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 ...) const volatile);
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1));
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1) const);
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1) volatile);
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1) const volatile);
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 ...));
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 ...) const);
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 ...) volatile);
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 ...) const volatile);
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1));
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1) const);
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1) volatile);
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1) const volatile);
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 ...));
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 ...) const);
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 ...) volatile);
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 ...) const volatile);
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1));
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1) const);
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1) volatile);
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1) const volatile);
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 ...));
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 ...) const);
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 ...) volatile);
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2));
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2) const);
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2) volatile);
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 ...));
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2));
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2) const);
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2) volatile);
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 ...));
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2));
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2) const);
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2) volatile);
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 ...));
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2));
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2) const);
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2) volatile);
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 ...));
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...));
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) volatile);
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...));
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) volatile);
+template <class R, class T , 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 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const volatile);
@@ -98341,6 +97401,8 @@
+}
+}
@@ -98380,22 +97442,11 @@
-namespace boost {
-namespace detail {
-template <typename T>
-struct has_trivial_ctor_impl
-{
- static const bool value = (::boost::type_traits::ice_or< ::boost::is_pod<T>::value, __has_trivial_constructor(T) >::value);
-};
-}
-template< typename T > struct has_trivial_constructor : ::boost::integral_constant<bool,::boost::detail::has_trivial_ctor_impl<T>::value> { };
-template< typename T > struct has_trivial_default_constructor : ::boost::integral_constant<bool,::boost::detail::has_trivial_ctor_impl<T>::value> { };
-}
@@ -99149,21 +98200,11 @@
-namespace boost {
-namespace detail{
-template <class T>
-struct has_nothrow_constructor_imp{
- static const bool value = (::boost::type_traits::ice_or< ::boost::has_trivial_constructor<T>::value, __has_nothrow_constructor(T) >::value);
-};
-}
-template< typename T > struct has_nothrow_constructor : ::boost::integral_constant<bool,::boost::detail::has_nothrow_constructor_imp<T>::value> { };
-template< typename T > struct has_nothrow_default_constructor : ::boost::integral_constant<bool,::boost::detail::has_nothrow_constructor_imp<T>::value> { };
-}
@@ -99199,6 +98240,7 @@
+namespace boost {
@@ -99212,18 +98254,49 @@
+namespace detail {
+template <bool>
+struct is_mem_fun_pointer_select
+ : ::boost::type_traits::false_result
+{
+};
+template <>
+struct is_mem_fun_pointer_select<false>
+{
+ template <typename T> struct result_
+ {
+#pragma warning(push)
+#pragma warning(disable:6334)
+ static T* make_t;
+ typedef result_<T> self_type;
+ static const bool value = ( 1 == sizeof(::boost::type_traits::is_mem_fun_pointer_tester(self_type::make_t)) );
+#pragma warning(pop)
+ };
+};
+template <typename T>
+struct is_member_function_pointer_impl
+ : is_mem_fun_pointer_select<
+ ::boost::type_traits::ice_or<
+ ::boost::is_reference<T>::value
+ , ::boost::is_array<T>::value
+ >::value
+ >::template result_<T>
+{
+};
+template <typename T>
+struct is_member_function_pointer_impl<T&> : public false_type{};
@@ -99245,13 +98318,20 @@
+template<> struct is_member_function_pointer_impl< void > { static const bool value = (false); };
+template<> struct is_member_function_pointer_impl< void const > { static const bool value = (false); };
+template<> struct is_member_function_pointer_impl< void volatile > { static const bool value = (false); };
+template<> struct is_member_function_pointer_impl< void const volatile > { static const bool value = (false); };
+}
+template< typename T > struct is_member_function_pointer : ::boost::integral_constant<bool,::boost::detail::is_member_function_pointer_impl<T>::value> { };
+}
@@ -100013,6 +99093,7 @@
+namespace boost {
@@ -100021,8 +99102,13 @@
+template< typename T > struct is_member_pointer : ::boost::integral_constant<bool,::boost::is_member_function_pointer<T>::value> { };
+template< typename T, typename U > struct is_member_pointer< U T::* > : ::boost::integral_constant<bool,true> { };
+template< typename T, typename U > struct is_member_pointer< U T::*const > : ::boost::integral_constant<bool,true> { };
+template< typename T, typename U > struct is_member_pointer< U T::*volatile > : ::boost::integral_constant<bool,true> { };
+template< typename T, typename U > struct is_member_pointer< U T::*const volatile > : ::boost::integral_constant<bool,true> { };
@@ -100078,6 +99164,7 @@
+}
@@ -100685,22 +99772,11 @@
-namespace boost {
-namespace detail {
-template <typename T>
-struct has_trivial_copy_impl
-{
- static const bool value = (::boost::type_traits::ice_and< ::boost::type_traits::ice_or< ::boost::is_pod<T>::value, __has_trivial_copy(T) >::value, ::boost::type_traits::ice_not< ::boost::is_volatile<T>::value >::value >::value);
-};
-}
-template< typename T > struct has_trivial_copy : ::boost::integral_constant<bool,::boost::detail::has_trivial_copy_impl<T>::value> { };
-template< typename T > struct has_trivial_copy_constructor : ::boost::integral_constant<bool,::boost::detail::has_trivial_copy_impl<T>::value> { };
-}
@@ -100766,6 +99842,8 @@
+namespace boost {
+namespace detail {
@@ -100773,10 +99851,39 @@
+template <typename T> struct cv_traits_imp {};
+template <typename T>
+struct cv_traits_imp<T*>
+{
+ static const bool is_const = false;
+ static const bool is_volatile = false;
+ typedef T unqualified_type;
+};
+template <typename T>
+struct cv_traits_imp<const T*>
+{
+ static const bool is_const = true;
+ static const bool is_volatile = false;
+ typedef T unqualified_type;
+};
+template <typename T>
+struct cv_traits_imp<volatile T*>
+{
+ static const bool is_const = false;
+ static const bool is_volatile = true;
+ typedef T unqualified_type;
+};
+template <typename T>
+struct cv_traits_imp<const volatile T*>
+{
+ static const bool is_const = true;
+ static const bool is_volatile = true;
+ typedef T unqualified_type;
+};
@@ -100804,6 +99911,8 @@
+}
+}
@@ -101454,21 +100563,11 @@
-namespace boost {
-namespace detail{
-template <class T>
-struct has_nothrow_copy_imp{
- static const bool value = (::boost::type_traits::ice_or< ::boost::has_trivial_copy<T>::value, __has_nothrow_copy(T) >::value);
-};
-}
-template< typename T > struct has_nothrow_copy : ::boost::integral_constant<bool,::boost::detail::has_nothrow_copy_imp<T>::value> { };
-template< typename T > struct has_nothrow_copy_constructor : ::boost::integral_constant<bool,::boost::detail::has_nothrow_copy_imp<T>::value> { };
-}
@@ -101609,8 +100708,15 @@
+namespace boost {
+namespace detail{
+template <class T>
+struct rvalue_ref_filter_rem_cv
+{
+ typedef typename boost::detail::cv_traits_imp<T*>::unqualified_type type;
+};
@@ -101624,11 +100730,17 @@
+}
+template< typename T > struct remove_cv { typedef typename boost::detail::rvalue_ref_filter_rem_cv<T>::type type; };
+template< typename T > struct remove_cv<T&> { typedef T& type; };
+template< typename T, std::size_t N > struct remove_cv<T const[N]> { typedef T type[N]; };
+template< typename T, std::size_t N > struct remove_cv<T volatile[N]> { typedef T type[N]; };
+template< typename T, std::size_t N > struct remove_cv<T const volatile[N]> { typedef T type[N]; };
@@ -101647,6 +100759,7 @@
+}
@@ -102401,12 +101514,18 @@
+namespace boost {
+namespace detail {
+template< typename T > struct is_pointer_helper
+{
+ static const bool value = false;
+};
@@ -102415,9 +101534,13 @@
+template< typename T > struct is_pointer_helper<T*> { static const bool value = true; };
+template< typename T >
+struct is_pointer_impl
+{
@@ -102428,9 +101551,13 @@
+ static const bool value = (::boost::type_traits::ice_and< ::boost::detail::is_pointer_helper<typename remove_cv<T>::type>::value , ::boost::type_traits::ice_not< ::boost::is_member_pointer<T>::value >::value >::value);
+};
+}
+template< typename T > struct is_pointer : ::boost::integral_constant<bool,::boost::detail::is_pointer_impl<T>::value> { };
@@ -102495,6 +101622,7 @@
+}
@@ -102766,21 +101894,11 @@
-namespace boost {
-namespace detail {
-template <typename T>
-struct has_trivial_dtor_impl
-{
- static const bool value = (::boost::type_traits::ice_or< ::boost::is_pod<T>::value, __has_trivial_destructor(T) >::value);
-};
-}
-template< typename T > struct has_trivial_destructor : ::boost::integral_constant<bool,::boost::detail::has_trivial_dtor_impl<T>::value> { };
-}
@@ -103484,16 +102602,30 @@
+namespace boost {
+namespace detail {
+template <typename T>
+struct is_scalar_impl
+{
+ static const bool value = (::boost::type_traits::ice_or< ::boost::is_arithmetic<T>::value, ::boost::is_enum<T>::value, ::boost::is_pointer<T>::value, ::boost::is_member_pointer<T>::value >::value);
+};
+template <> struct is_scalar_impl<void>{ static const bool value = false; };
+template <> struct is_scalar_impl<void const>{ static const bool value = false; };
+template <> struct is_scalar_impl<void volatile>{ static const bool value = false; };
+template <> struct is_scalar_impl<void const volatile>{ static const bool value = false; };
+}
+template< typename T > struct is_scalar : ::boost::integral_constant<bool,::boost::detail::is_scalar_impl<T>::value> { };
+}
@@ -103534,11 +102666,8 @@
-namespace boost {
-template< typename T > struct has_nothrow_destructor : ::boost::integral_constant<bool,::boost::has_trivial_destructor<T>::value> { };
-}
@@ -104557,14 +103686,26 @@
+namespace boost {
+template< typename T > struct is_POD;
+namespace detail {
+template <typename T> struct is_pod_impl
+{
+ static const bool value = (::boost::type_traits::ice_or< ::boost::is_scalar<T>::value, ::boost::is_void<T>::value, (__is_pod(T) && __has_trivial_constructor(T)) >::value);
+};
+template <typename T, std::size_t sz>
+struct is_pod_impl<T[sz]>
+ : is_pod_impl<T>
+{
+};
@@ -104634,12 +103775,20 @@
+template<> struct is_pod_impl< void > { static const bool value = (true); };
+template<> struct is_pod_impl< void const > { static const bool value = (true); };
+template<> struct is_pod_impl< void volatile > { static const bool value = (true); };
+template<> struct is_pod_impl< void const volatile > { static const bool value = (true); };
+}
+template< typename T > struct is_POD : ::boost::integral_constant<bool,::boost::detail::is_pod_impl<T>::value> { };
+template< typename T > struct is_pod : ::boost::integral_constant<bool,::boost::detail::is_pod_impl<T>::value> { };
+}
@@ -104765,11 +103914,8 @@
-namespace boost {
-template< typename T > struct has_virtual_destructor : ::boost::integral_constant<bool,__has_virtual_destructor(T)> { };
-}
@@ -104808,7 +103954,6 @@
-#pragma once
@@ -105061,12 +104206,17 @@
+namespace boost{
+template <bool x> struct STATIC_ASSERTION_FAILURE;
+template <> struct STATIC_ASSERTION_FAILURE<true> { enum { value = 1 }; };
+template<int x> struct static_assert_test{};
+}
@@ -105852,15 +105002,8 @@
-namespace boost {
-namespace detail{
-template <class T>
-struct is_abstract_imp
-{
- static const bool value = __is_abstract(T);
-};
@@ -105928,15 +105071,12 @@
-}
-template< typename T > struct is_abstract : ::boost::integral_constant<bool,::boost::detail::is_abstract_imp<T>::value> { };
-}
@@ -105950,12 +105090,20 @@
+#pragma warning(push)
+#pragma warning(disable: 4121)
+namespace boost {
+namespace detail {
+class alignment_dummy;
+typedef void (*function_ptr)();
+typedef int (alignment_dummy::*member_ptr);
+typedef int (alignment_dummy::*member_function_ptr)();
@@ -106015,7 +105163,19 @@
+template <bool found, std::size_t target, class TestType>
+struct lower_alignment_helper
+{
+ typedef char type;
+ enum { value = true };
+};
+template <std::size_t target, class TestType>
+struct lower_alignment_helper<false,target,TestType>
+{
+ enum { value = (alignment_of<TestType>::value == target) };
+ typedef typename mpl::if_c<value, TestType, char>::type type;
+};
@@ -106029,9 +105189,24 @@
+template <typename T>
+struct has_one_T
+{
+ T data;
+};
+template <std::size_t target>
+union lower_alignment
+{
+ enum { found0 = false };
+ typename lower_alignment_helper< found0,target,char >::type t0; enum { found1 = lower_alignment_helper<found0,target,char >::value }; typename lower_alignment_helper< found1,target,short >::type t1; enum { found2 = lower_alignment_helper<found1,target,short >::value }; typename lower_alignment_helper< found2,target,int >::type t2; enum { found3 = lower_alignment_helper<found2,target,int >::value }; typename lower_alignment_helper< found3,target,long >::type t3; enum { found4 = lower_alignment_helper<found3,target,long >::value }; typename lower_alignment_helper< found4,target,::boost::long_long_type >::type t4; enum { found5 = lower_alignment_helper<found4,target,::boost::long_long_type >::value }; typename lower_alignment_helper< found5,target,float >::type t5; enum { found6 = lower_alignment_helper<found5,target,float >::value }; typename lower_alignment_helper< found6,target,double >::type t6; enum { found7 = lower_alignment_helper<found6,target,double >::value }; typename lower_alignment_helper< fou
nd7,target,long double >::type t7; enum { found8 = lower_alignment_helper<found7,target,long double >::value }; typename lower_alignment_helper< found8,target,void* >::type t8; enum { found9 = lower_alignment_helper<found8,target,void* >::value }; typename lower_alignment_helper< found9,target,function_ptr >::type t9; enum { found10 = lower_alignment_helper<found9,target,function_ptr >::value }; typename lower_alignment_helper< found10,target,member_ptr >::type t10; enum { found11 = lower_alignment_helper<found10,target,member_ptr >::value }; typename lower_alignment_helper< found11,target,member_function_ptr >::type t11; enum { found12 = lower_alignment_helper<found11,target,member_function_ptr >::value }; typename lower_alignment_helper< found12,target,boost::detail::has_one_T< char > >::type t12; enum { found13 = lower_alignment_helper<found12,target,boost::detail::has_one_T< char > >::value }; typename lower_alignment_helper< found13,target,boost::detail::has_one_T< short > >::type t13; enum { found14 =
lower_alignment_helper<found13,target,boost::detail::has_one_T< short > >::value }; typename lower_alignment_helper< found14,target,boost::detail::has_one_T< int > >::type t14; enum { found15 = lower_alignment_helper<found14,target,boost::detail::has_one_T< int > >::value }; typename lower_alignment_helper< found15,target,boost::detail::has_one_T< long > >::type t15; enum { found16 = lower_alignment_helper<found15,target,boost::detail::has_one_T< long > >::value }; typename lower_alignment_helper< found16,target,boost::detail::has_one_T< ::boost::long_long_type > >::type t16; enum { found17 = lower_alignment_helper<found16,target,boost::detail::has_one_T< ::boost::long_long_type > >::value }; typename lower_alignment_helper< found17,target,boost::detail::has_one_T< float > >::type t17; enum { found18 = lower_alignment_helper<found17,target,boost::detail::has_one_T< float > >::value }; typename lower_alignment_helper< found18,target,boost::detail::has_one_T< double > >::type t18; enum { found19 = lower_alignm
ent_helper<found18,target,boost::detail::has_one_T< double > >::value }; typename lower_alignment_helper< found19,target,boost::detail::has_one_T< long double > >::type t19; enum { found20 = lower_alignment_helper<found19,target,boost::detail::has_one_T< long double > >::value }; typename lower_alignment_helper< found20,target,boost::detail::has_one_T< void* > >::type t20; enum { found21 = lower_alignment_helper<found20,target,boost::detail::has_one_T< void* > >::value }; typename lower_alignment_helper< found21,target,boost::detail::has_one_T< function_ptr > >::type t21; enum { found22 = lower_alignment_helper<found21,target,boost::detail::has_one_T< function_ptr > >::value }; typename lower_alignment_helper< found22,target,boost::detail::has_one_T< member_ptr > >::type t22; enum { found23 = lower_alignment_helper<found22,target,boost::detail::has_one_T< member_ptr > >::value }; typename lower_alignment_helper< found23,target,boost::detail::has_one_T< member_function_ptr > >::type t23; enum { found24 = lowe
r_alignment_helper<found23,target,boost::detail::has_one_T< member_function_ptr > >::value };
+};
+union max_align
+{
+ char t0; short t1; int t2; long t3; ::boost::long_long_type t4; float t5; double t6; long double t7; void* t8; function_ptr t9; member_ptr t10; member_function_ptr t11; boost::detail::has_one_T< char > t12; boost::detail::has_one_T< short > t13; boost::detail::has_one_T< int > t14; boost::detail::has_one_T< long > t15; boost::detail::has_one_T< ::boost::long_long_type > t16; boost::detail::has_one_T< float > t17; boost::detail::has_one_T< double > t18; boost::detail::has_one_T< long double > t19; boost::detail::has_one_T< void* > t20; boost::detail::has_one_T< function_ptr > t21; boost::detail::has_one_T< member_ptr > t22; boost::detail::has_one_T< member_function_ptr > t23;
+};
@@ -106040,6 +105215,11 @@
+template<std::size_t TAlign, std::size_t Align>
+struct is_aligned
+{
+ static const bool value = (TAlign >= Align) & (TAlign % Align == 0);
+};
@@ -106052,18 +105232,46 @@
+}
+template<std::size_t Align>
+struct is_pod< ::boost::detail::lower_alignment<Align> >
+{
+ static const std::size_t value = true;
+};
+namespace detail{
+template <std::size_t Align>
+class type_with_alignment_imp
+{
+ typedef ::boost::detail::lower_alignment<Align> t1;
+ typedef typename mpl::if_c<
+ ::boost::detail::is_aligned< ::boost::alignment_of<t1>::value,Align >::value
+ , t1
+ , ::boost::detail::max_align
+ >::type align_t;
+ static const std::size_t found = alignment_of<align_t>::value;
+ typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)(found >= Align) >)> boost_static_assert_typedef_0;
+ typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)(found % Align == 0) >)> boost_static_assert_typedef_1;
+ public:
+ typedef align_t type;
+};
+}
+template <std::size_t Align>
+class type_with_alignment
+ : public ::boost::detail::type_with_alignment_imp<Align>
+{
+};
@@ -106106,8 +105314,81 @@
+namespace align {
+struct __declspec(align(8)) a8 {
+ char m[8];
+ typedef a8 type;
+};
+struct __declspec(align(16)) a16 {
+ char m[16];
+ typedef a16 type;
+};
+struct __declspec(align(32)) a32 {
+ char m[32];
+ typedef a32 type;
+};
+struct __declspec(align(64)) a64
+{
+ char m[64];
+ typedef a64 type;
+};
+struct __declspec(align(128)) a128 {
+ char m[128];
+ typedef a128 type;
+};
+}
+template<> class type_with_alignment<8>
+{
+ typedef mpl::if_c<
+ ::boost::alignment_of<boost::detail::max_align>::value < 8,
+ align::a8,
+ boost::detail::type_with_alignment_imp<8> >::type t1;
+public:
+ typedef t1::type type;
+};
+template<> class type_with_alignment<16>
+{
+ typedef mpl::if_c<
+ ::boost::alignment_of<boost::detail::max_align>::value < 16,
+ align::a16,
+ boost::detail::type_with_alignment_imp<16> >::type t1;
+public:
+ typedef t1::type type;
+};
+template<> class type_with_alignment<32>
+{
+ typedef mpl::if_c<
+ ::boost::alignment_of<boost::detail::max_align>::value < 32,
+ align::a32,
+ boost::detail::type_with_alignment_imp<32> >::type t1;
+public:
+ typedef t1::type type;
+};
+template<> class type_with_alignment<64> {
+ typedef mpl::if_c<
+ ::boost::alignment_of<boost::detail::max_align>::value < 64,
+ align::a64,
+ boost::detail::type_with_alignment_imp<64> >::type t1;
+public:
+ typedef t1::type type;
+};
+template<> class type_with_alignment<128> {
+ typedef mpl::if_c<
+ ::boost::alignment_of<boost::detail::max_align>::value < 128,
+ align::a128,
+ boost::detail::type_with_alignment_imp<128> >::type t1;
+public:
+ typedef t1::type type;
+};
+namespace detail {
+template<> struct is_pod_impl< ::boost::align::a8 > { static const bool value = (true); };
+template<> struct is_pod_impl< ::boost::align::a16 > { static const bool value = (true); };
+template<> struct is_pod_impl< ::boost::align::a32 > { static const bool value = (true); };
+template<> struct is_pod_impl< ::boost::align::a64 > { static const bool value = (true); };
+template<> struct is_pod_impl< ::boost::align::a128 > { static const bool value = (true); };
+}
@@ -106124,7 +105405,6 @@
-
@@ -106155,8 +105435,10 @@
+}
+#pragma warning(pop)
@@ -106903,24 +106185,46 @@
+namespace boost { namespace mpl {
+template<
+ typename C = na
+ , typename F1 = na
+ , typename F2 = na
+ >
+struct eval_if
+ : if_<C,F1,F2>::type
+{
+
+};
+template<
+ bool C
+ , typename F1
+ , typename F2
+ >
+struct eval_if_c
+ : if_c<C,F1,F2>::type
+{
+};
+template<> struct eval_if< na , na , na > { template< typename T1 , typename T2 , typename T3 , typename T4 =na , typename T5 =na > struct apply : eval_if< T1 , T2 , T3 > { }; }; template< typename Tag > struct lambda< eval_if< na , na , na > , Tag > { typedef false_ is_le; typedef eval_if< na , na , na > result_; typedef eval_if< na , na , na > type; };
+}}
@@ -107210,9 +106514,7 @@
-namespace boost {
-namespace detail {
@@ -107292,10 +106594,30 @@
+namespace boost { namespace mpl {
+template<
+ typename T = na
+ >
+struct identity
+{
+ typedef T type;
+
+};
+template<
+ typename T = na
+ >
+struct make_identity
+{
+ typedef identity<T> type;
+
+};
+template<> struct identity< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : identity< T1 > { }; }; template< typename Tag > struct lambda< identity< na > , Tag > { typedef false_ is_le; typedef identity< na > result_; typedef identity< na > type; };
+template<> struct make_identity< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : make_identity< T1 > { }; }; template< typename Tag > struct lambda< make_identity< na > , Tag > { typedef false_ is_le; typedef make_identity< na > result_; typedef make_identity< na > type; };
+}}
@@ -107406,30 +106728,17 @@
-template <typename B, typename D>
-struct is_base_and_derived_impl
-{
- typedef typename remove_cv<B>::type ncvB;
- typedef typename remove_cv<D>::type ncvD;
- static const bool value = ((__is_base_of(B,D) && !is_same<B,D>::value) && ! ::boost::is_same<ncvB,ncvD>::value);
-};
-}
-template< typename Base, typename Derived > struct is_base_and_derived : ::boost::integral_constant<bool,(::boost::detail::is_base_and_derived_impl<Base,Derived>::value)> { };
-template< typename Base, typename Derived > struct is_base_and_derived< Base&,Derived > : ::boost::integral_constant<bool,false> { };
-template< typename Base, typename Derived > struct is_base_and_derived< Base,Derived& > : ::boost::integral_constant<bool,false> { };
-template< typename Base, typename Derived > struct is_base_and_derived< Base&,Derived& > : ::boost::integral_constant<bool,false> { };
-}
@@ -107471,7 +106780,6 @@
-
@@ -107483,7 +106791,6 @@
-
@@ -108033,22 +107340,62 @@
+namespace boost {
+namespace detail { namespace aligned_storage {
+static const std::size_t alignment_of_max_align = ::boost::alignment_of<max_align>::value;
+template <
+ std::size_t size_
+ , std::size_t alignment_
+>
+struct aligned_storage_imp
+{
+ union data_t
+ {
+ char buf[size_];
+ typename mpl::eval_if_c<
+ alignment_ == std::size_t(-1)
+ , mpl::identity<detail::max_align>
+ , type_with_alignment<alignment_>
+ >::type align_;
+ } data_;
+ void* address() const { return const_cast<aligned_storage_imp*>(this); }
+};
+template< std::size_t alignment_ >
+struct aligned_storage_imp<0u,alignment_>
+{
+
+ void* address() const { return 0; }
+};
+}}
+template <
+ std::size_t size_
+ , std::size_t alignment_ = std::size_t(-1)
+>
+class aligned_storage :
+ private
+ detail::aligned_storage::aligned_storage_imp<size_, alignment_>
+{
+
+public:
+ typedef detail::aligned_storage::aligned_storage_imp<size_, alignment_> type;
+ static const std::size_t size = size_;
+ static const std::size_t alignment = ( alignment_ == std::size_t(-1) ? ::boost::detail::aligned_storage::alignment_of_max_align : alignment_ );
@@ -108059,17 +107406,36 @@
+public:
+ aligned_storage(const aligned_storage&);
+ aligned_storage& operator=(const aligned_storage&);
+public:
+ aligned_storage()
+ {
+ }
+ ~aligned_storage()
+ {
+ }
+public:
+ void* address()
+ {
+ return static_cast<type*>(this)->address();
+ }
+ const void* address() const
+ {
+ return static_cast<const type*>(this)->address();
+ }
@@ -108077,6 +107443,7 @@
+};
@@ -108096,9 +107463,16 @@
+template <std::size_t size_, std::size_t alignment_>
+struct is_pod<boost::detail::aligned_storage::aligned_storage_imp<size_,alignment_> >
+ : ::boost::integral_constant<bool,true>
+{
+
+};
+}
@@ -108936,9 +108310,7 @@
-namespace boost {
-namespace detail {
@@ -109017,23 +108389,14 @@
-template <typename T>
-struct is_class_impl
-{
- static const bool value = __is_class(T);
-};
-}
-template< typename T > struct is_class : ::boost::integral_constant<bool,::boost::detail::is_class_impl<T>::value> { };
-
-}
@@ -109050,8 +108413,12 @@
+namespace boost {
+ template <typename T>
+ typename add_rvalue_reference<T>::type declval();
+}
@@ -109134,24 +108501,49 @@
+namespace boost {
+ 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;
+ };
+ template<typename T>
+ struct common_type<T, void, void>
+ {
+ typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)(sizeof(T) > 0) >)> boost_static_assert_typedef_2;
+ public:
+ typedef T type;
+ };
+namespace type_traits_detail {
+ template <class T, class U>
+ struct common_type_2
+ {
+ private:
+ typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)(sizeof(T) > 0) >)> boost_static_assert_typedef_3;
+ typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)(sizeof(U) > 0) >)> boost_static_assert_typedef_4;
+ static bool declval_bool();
+ static typename add_rvalue_reference<T>::type declval_T();
+ static typename add_rvalue_reference<U>::type declval_U();
+ static typename add_rvalue_reference<bool>::type declval_b();
@@ -109163,14 +108555,27 @@
+ public:
+ typedef typename boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(declval_b() ? declval_T() : declval_U()))>::type type;
+ };
+ template <class T>
+ struct common_type_2<T, T>
+ {
+ typedef T type;
+ };
+ }
+ template <class T, class U>
+ struct common_type<T, U, void>
+ : type_traits_detail::common_type_2<T,U>
+ { };
@@ -109181,6 +108586,7 @@
+}
@@ -109335,8 +108741,14 @@
+namespace boost {
+template <bool b, class T, class U>
+struct conditional : public mpl::if_c<b, T, U>
+{
+};
+}
@@ -109860,27 +109272,12 @@
-namespace boost {
- namespace detail{
- template <class B, class D>
- struct is_base_of_imp
- {
- typedef typename remove_cv<B>::type ncvB;
- typedef typename remove_cv<D>::type ncvD;
- static const bool value = (::boost::type_traits::ice_or< (::boost::detail::is_base_and_derived_impl<ncvB,ncvD>::value), (::boost::type_traits::ice_and< ::boost::is_same<ncvB,ncvD>::value, ::boost::is_class<ncvB>::value>::value)>::value);
- };
- }
-template< typename Base, typename Derived > struct is_base_of : ::boost::integral_constant<bool,(::boost::detail::is_base_of_imp<Base, Derived>::value)> { };
-template< typename Base, typename Derived > struct is_base_of< Base&,Derived > : ::boost::integral_constant<bool,false> { };
-template< typename Base, typename Derived > struct is_base_of< Base,Derived& > : ::boost::integral_constant<bool,false> { };
-template< typename Base, typename Derived > struct is_base_of< Base&,Derived& > : ::boost::integral_constant<bool,false> { };
-}
@@ -110450,13 +109847,24 @@
+namespace boost {
+template< typename T > struct remove_bounds { typedef T type; };
+template< typename T, std::size_t N > struct remove_bounds<T[N]> { typedef T type; };
+template< typename T, std::size_t N > struct remove_bounds<T const[N]> { typedef T const type; };
+template< typename T, std::size_t N > struct remove_bounds<T volatile[N]> { typedef T volatile type; };
+template< typename T, std::size_t N > struct remove_bounds<T const volatile[N]> { typedef T const volatile type; };
+template< typename T > struct remove_bounds<T[]> { typedef T type; };
+template< typename T > struct remove_bounds<T const[]> { typedef T const type; };
+template< typename T > struct remove_bounds<T volatile[]> { typedef T volatile type; };
+template< typename T > struct remove_bounds<T const volatile[]> { typedef T const volatile type; };
+}
@@ -110751,7 +110159,27 @@
+namespace boost
+{
+ template< class T >
+ struct decay
+ {
+ private:
+ typedef typename remove_reference<T>::type Ty;
+ public:
+ typedef typename mpl::eval_if<
+ is_array<Ty>,
+ mpl::identity<typename remove_bounds<Ty>::type*>,
+ typename mpl::eval_if<
+ is_function<Ty>,
+ add_pointer<Ty>,
+ mpl::identity<Ty>
+ >
+ >::type type;
+ };
+
+}
@@ -111288,7 +110716,9 @@
+namespace boost {
+namespace detail{
@@ -111299,26 +110729,119 @@
+template <class T, std::size_t N>
+struct extent_imp
+{
+ static const std::size_t value = 0;
+};
+template <class T, std::size_t R, std::size_t N>
+struct extent_imp<T[R], N>
+{
+ static const std::size_t value = (::boost::detail::extent_imp<T, N-1>::value);
+};
+template <class T, std::size_t R, std::size_t N>
+struct extent_imp<T const[R], N>
+{
+ static const std::size_t value = (::boost::detail::extent_imp<T, N-1>::value);
+};
+template <class T, std::size_t R, std::size_t N>
+struct extent_imp<T volatile[R], N>
+{
+ static const std::size_t value = (::boost::detail::extent_imp<T, N-1>::value);
+};
+template <class T, std::size_t R, std::size_t N>
+struct extent_imp<T const volatile[R], N>
+{
+ static const std::size_t value = (::boost::detail::extent_imp<T, N-1>::value);
+};
+template <class T, std::size_t R>
+struct extent_imp<T[R],0>
+{
+ static const std::size_t value = R;
+};
+template <class T, std::size_t R>
+struct extent_imp<T const[R], 0>
+{
+ static const std::size_t value = R;
+};
+template <class T, std::size_t R>
+struct extent_imp<T volatile[R], 0>
+{
+ static const std::size_t value = R;
+};
+template <class T, std::size_t R>
+struct extent_imp<T const volatile[R], 0>
+{
+ static const std::size_t value = R;
+};
+template <class T, std::size_t N>
+struct extent_imp<T[], N>
+{
+ static const std::size_t value = (::boost::detail::extent_imp<T, N-1>::value);
+};
+template <class T, std::size_t N>
+struct extent_imp<T const[], N>
+{
+ static const std::size_t value = (::boost::detail::extent_imp<T, N-1>::value);
+};
+template <class T, std::size_t N>
+struct extent_imp<T volatile[], N>
+{
+ static const std::size_t value = (::boost::detail::extent_imp<T, N-1>::value);
+};
+template <class T, std::size_t N>
+struct extent_imp<T const volatile[], N>
+{
+ static const std::size_t value = (::boost::detail::extent_imp<T, N-1>::value);
+};
+template <class T>
+struct extent_imp<T[], 0>
+{
+ static const std::size_t value = 0;
+};
+template <class T>
+struct extent_imp<T const[], 0>
+{
+ static const std::size_t value = 0;
+};
+template <class T>
+struct extent_imp<T volatile[], 0>
+{
+ static const std::size_t value = 0;
+};
+template <class T>
+struct extent_imp<T const volatile[], 0>
+{
+ static const std::size_t value = 0;
+};
+}
+template <class T, std::size_t N = 0>
+struct extent
+ : public ::boost::integral_constant<std::size_t, ::boost::detail::extent_imp<T,N>::value>
+{
+
+};
+}
@@ -111505,7 +111028,6 @@
-namespace boost {
@@ -111519,7 +111041,6 @@
-namespace detail {
@@ -111716,24 +111237,12 @@
-template <typename From, typename To>
-struct is_convertible_basic_impl
-{
- static ::boost::type_traits::no_type __cdecl _m_check(...);
- static ::boost::type_traits::yes_type __cdecl _m_check(To);
- static From _m_from;
-#pragma warning(push)
-#pragma warning(disable:4244)
-#pragma warning(disable:6334)
- static const bool value = sizeof( _m_check(_m_from) ) == sizeof(::boost::type_traits::yes_type);
-#pragma warning(pop)
-};
@@ -111755,78 +111264,21 @@
-template <typename From, typename To>
-struct is_convertible_impl
-{
- typedef typename add_reference<From>::type ref_type;
- static const bool value = (::boost::type_traits::ice_and< ::boost::type_traits::ice_or< ::boost::detail::is_convertible_basic_impl<ref_type,To>::value, ::boost::is_void<To>::value >::value, ::boost::type_traits::ice_not< ::boost::is_array<To>::value >::value >::value);
-};
-template <bool trivial1, bool trivial2, bool abstract_target>
-struct is_convertible_impl_select
-{
- template <class From, class To>
- struct rebind
- {
- typedef is_convertible_impl<From, To> type;
- };
-};
-template <>
-struct is_convertible_impl_select<true, true, false>
-{
- template <class From, class To>
- struct rebind
- {
- typedef true_type type;
- };
-};
-template <>
-struct is_convertible_impl_select<false, false, true>
-{
- template <class From, class To>
- struct rebind
- {
- typedef false_type type;
- };
-};
-template <>
-struct is_convertible_impl_select<true, false, true>
-{
- template <class From, class To>
- struct rebind
- {
- typedef false_type type;
- };
-};
-template <typename From, typename To>
-struct is_convertible_impl_dispatch_base
-{
- typedef is_convertible_impl_select<
- ::boost::is_arithmetic<From>::value,
- ::boost::is_arithmetic<To>::value,
- ::boost::is_abstract<To>::value
- > selector;
- typedef typename selector::template rebind<From, To> isc_binder;
- typedef typename isc_binder::type type;
-};
-template <typename From, typename To>
-struct is_convertible_impl_dispatch
- : public is_convertible_impl_dispatch_base<From, To>::type
-{};
@@ -111848,7 +111300,6 @@
- template<> struct is_convertible_impl< void,void > { static const bool value = (true); }; template<> struct is_convertible_impl< void,void const > { static const bool value = (true); }; template<> struct is_convertible_impl< void,void volatile > { static const bool value = (true); }; template<> struct is_convertible_impl< void,void const volatile > { static const bool value = (true); }; template<> struct is_convertible_impl< void const,void > { static const bool value = (true); }; template<> struct is_convertible_impl< void const,void const > { static const bool value = (true); }; template<> struct is_convertible_impl< void const,void volatile > { static const bool value = (true); }; template<> struct is_convertible_impl< void const,void const volatile > { static const bool value = (true); }; template<> struct is_convertible_impl< void volatile,void > { static const bool value = (true); }; template<> struct is_convertible_impl< void volatile,void const > { static const bool value = (true); }; template<>
struct is_convertible_impl< void volatile,void volatile > { static const bool value = (true); }; template<> struct is_convertible_impl< void volatile,void const volatile > { static const bool value = (true); }; template<> struct is_convertible_impl< void const volatile,void > { static const bool value = (true); }; template<> struct is_convertible_impl< void const volatile,void const > { static const bool value = (true); }; template<> struct is_convertible_impl< void const volatile,void volatile > { static const bool value = (true); }; template<> struct is_convertible_impl< void const volatile,void const volatile > { static const bool value = (true); };
@@ -111858,21 +111309,11 @@
-template< typename To > struct is_convertible_impl< void,To > { static const bool value = (false); };
-template< typename From > struct is_convertible_impl< From,void > { static const bool value = (true); };
-template< typename To > struct is_convertible_impl< void const,To > { static const bool value = (false); };
-template< typename To > struct is_convertible_impl< void volatile,To > { static const bool value = (false); };
-template< typename To > struct is_convertible_impl< void const volatile,To > { static const bool value = (false); };
-template< typename From > struct is_convertible_impl< From,void const > { static const bool value = (true); };
-template< typename From > struct is_convertible_impl< From,void volatile > { static const bool value = (true); };
-template< typename From > struct is_convertible_impl< From,void const volatile > { static const bool value = (true); };
-}
-template< typename From, typename To > struct is_convertible : ::boost::integral_constant<bool,(::boost::detail::is_convertible_impl_dispatch<From,To>::value)> { };
@@ -111880,7 +111321,6 @@
-}
@@ -111916,93 +111356,82 @@
-#pragma once
-#pragma once
-extern "C" {
-#pragma pack(push,8)
-
-
-
-typedef union
- {
- unsigned short _Word[8];
- float _Float;
- double _Double;
- long double _Long_double;
- } _Dconst;
-
-void __cdecl _Feraise(int);
-
- double __cdecl _Cosh(double, double);
- short __cdecl _Dtest(double *);
- short __cdecl _Exp(double *, double, short);
- double __cdecl _Sinh(double, double);
-extern _Dconst _Denorm, _Hugeval, _Inf,
- _Nan, _Snan;
-
- float __cdecl _FCosh(float, float);
- short __cdecl _FDtest(float *);
- short __cdecl _FExp(float *, float, short);
- float __cdecl _FSinh(float, float);
-extern _Dconst _FDenorm, _FInf, _FNan, _FSnan;
-
- long double __cdecl _LCosh(long double, long double);
- short __cdecl _LDtest(long double *);
- short __cdecl _LExp(long double *, long double, short);
- long double __cdecl _LSinh(long double, long double);
-extern _Dconst _LDenorm, _LInf, _LNan, _LSnan;
-}
-#pragma pack(pop)
+namespace boost {
+namespace type_traits { namespace detail {
+template<class T>
+struct floating_point_promotion
+{
+ typedef T type;
+};
-#pragma once
+template<>
+struct floating_point_promotion<float>
+{
+ typedef double type;
+};
+template<>
+struct floating_point_promotion<float const>
+{
+ typedef double const type;
+};
+template<>
+struct floating_point_promotion<float volatile>
+{
+ typedef double volatile type;
+};
+template<>
+struct floating_point_promotion<float const volatile>
+{
+ typedef double const volatile type;
+};
@@ -112010,7 +111439,6 @@
-
@@ -112024,7 +111452,10 @@
+} }
+template< typename T > struct floating_point_promotion { typedef typename boost::type_traits::detail::floating_point_promotion<T>::type type; };
+}
@@ -112043,7 +111474,6 @@
-
@@ -112319,22 +111749,162 @@
+namespace boost {
+namespace detail {
+template<typename Function> struct function_traits_helper;
+template<typename R>
+struct function_traits_helper<R (*)(void)>
+{
+ static const unsigned arity = 0;
+ typedef R result_type;
+};
+template<typename R, typename T1>
+struct function_traits_helper<R (*)(T1)>
+{
+ static const unsigned arity = 1;
+ typedef R result_type;
+ typedef T1 arg1_type;
+ typedef T1 argument_type;
+};
+template<typename R, typename T1, typename T2>
+struct function_traits_helper<R (*)(T1, T2)>
+{
+ static const unsigned arity = 2;
+ typedef R result_type;
+ typedef T1 arg1_type;
+ typedef T2 arg2_type;
+ typedef T1 first_argument_type;
+ typedef T2 second_argument_type;
+};
+template<typename R, typename T1, typename T2, typename T3>
+struct function_traits_helper<R (*)(T1, T2, T3)>
+{
+ static const unsigned arity = 3;
+ typedef R result_type;
+ typedef T1 arg1_type;
+ typedef T2 arg2_type;
+ typedef T3 arg3_type;
+};
+template<typename R, typename T1, typename T2, typename T3, typename T4>
+struct function_traits_helper<R (*)(T1, T2, T3, T4)>
+{
+ static const unsigned arity = 4;
+ typedef R result_type;
+ typedef T1 arg1_type;
+ typedef T2 arg2_type;
+ typedef T3 arg3_type;
+ typedef T4 arg4_type;
+};
+template<typename R, typename T1, typename T2, typename T3, typename T4,
+ typename T5>
+struct function_traits_helper<R (*)(T1, T2, T3, T4, T5)>
+{
+ static const unsigned arity = 5;
+ typedef R result_type;
+ typedef T1 arg1_type;
+ typedef T2 arg2_type;
+ typedef T3 arg3_type;
+ typedef T4 arg4_type;
+ typedef T5 arg5_type;
+};
+template<typename R, typename T1, typename T2, typename T3, typename T4,
+ typename T5, typename T6>
+struct function_traits_helper<R (*)(T1, T2, T3, T4, T5, T6)>
+{
+ static const unsigned arity = 6;
+ typedef R result_type;
+ typedef T1 arg1_type;
+ typedef T2 arg2_type;
+ typedef T3 arg3_type;
+ typedef T4 arg4_type;
+ typedef T5 arg5_type;
+ typedef T6 arg6_type;
+};
+template<typename R, typename T1, typename T2, typename T3, typename T4,
+ typename T5, typename T6, typename T7>
+struct function_traits_helper<R (*)(T1, T2, T3, T4, T5, T6, T7)>
+{
+ static const unsigned arity = 7;
+ typedef R result_type;
+ typedef T1 arg1_type;
+ typedef T2 arg2_type;
+ typedef T3 arg3_type;
+ typedef T4 arg4_type;
+ typedef T5 arg5_type;
+ typedef T6 arg6_type;
+ typedef T7 arg7_type;
+};
+template<typename R, typename T1, typename T2, typename T3, typename T4,
+ typename T5, typename T6, typename T7, typename T8>
+struct function_traits_helper<R (*)(T1, T2, T3, T4, T5, T6, T7, T8)>
+{
+ static const unsigned arity = 8;
+ typedef R result_type;
+ typedef T1 arg1_type;
+ typedef T2 arg2_type;
+ typedef T3 arg3_type;
+ typedef T4 arg4_type;
+ typedef T5 arg5_type;
+ typedef T6 arg6_type;
+ typedef T7 arg7_type;
+ typedef T8 arg8_type;
+};
+template<typename R, typename T1, typename T2, typename T3, typename T4,
+ typename T5, typename T6, typename T7, typename T8, typename T9>
+struct function_traits_helper<R (*)(T1, T2, T3, T4, T5, T6, T7, T8, T9)>
+{
+ static const unsigned arity = 9;
+ typedef R result_type;
+ typedef T1 arg1_type;
+ typedef T2 arg2_type;
+ typedef T3 arg3_type;
+ typedef T4 arg4_type;
+ typedef T5 arg5_type;
+ typedef T6 arg6_type;
+ typedef T7 arg7_type;
+ typedef T8 arg8_type;
+ typedef T9 arg9_type;
+};
+template<typename R, typename T1, typename T2, typename T3, typename T4,
+ typename T5, typename T6, typename T7, typename T8, typename T9,
+ typename T10>
+struct function_traits_helper<R (*)(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)>
+{
+ static const unsigned arity = 10;
+ typedef R result_type;
+ typedef T1 arg1_type;
+ typedef T2 arg2_type;
+ typedef T3 arg3_type;
+ typedef T4 arg4_type;
+ typedef T5 arg5_type;
+ typedef T6 arg6_type;
+ typedef T7 arg7_type;
+ typedef T8 arg8_type;
+ typedef T9 arg9_type;
+ typedef T10 arg10_type;
+};
+}
+template<typename Function>
+struct function_traits :
+ public boost::detail::function_traits_helper<typename boost::add_pointer<Function>::type>
+{
+};
@@ -112397,6 +111967,7 @@
+}
@@ -112415,15 +111986,20 @@
+#pragma once
+#pragma pack(push,8)
+#pragma warning(push,3)
+
+
@@ -112435,32 +112011,90 @@
+namespace std {
+
+
+typedef void (__cdecl * new_handler) ();
+
+
+struct nothrow_t
+ {
+ };
+extern const nothrow_t nothrow;
+
+
+ new_handler __cdecl set_new_handler(new_handler)
+ throw ();
+}
+
+void __cdecl operator delete(void *) throw ();
+ void *__cdecl operator new(size_t _Size) throw (...);
+
+
+inline void *__cdecl operator new(size_t, void *_Where) throw ()
+ {
+ return (_Where);
+ }
+inline void __cdecl operator delete(void *, void *) throw ()
+ {
+ }
+
+
+
+inline void *__cdecl operator new[](size_t, void *_Where) throw ()
+ {
+ return (_Where);
+ }
+inline void __cdecl operator delete[](void *, void *) throw ()
+ {
+ }
+
+void __cdecl operator delete[](void *) throw ();
+ void *__cdecl operator new[](size_t _Size)
+ throw (...);
+
+
+ void *__cdecl operator new(size_t _Size, const std::nothrow_t&)
+ throw ();
+ void *__cdecl operator new[](size_t _Size, const std::nothrow_t&)
+ throw ();
+void __cdecl operator delete(void *, const std::nothrow_t&)
+ throw ();
+void __cdecl operator delete[](void *, const std::nothrow_t&)
+ throw ();
+
+
+using std::new_handler;
+
+
+#pragma warning(pop)
+#pragma pack(pop)
@@ -113334,14 +112968,83 @@
+namespace boost {
+namespace detail {
+ template <class U, U x>
+ struct test;
+ template <typename T>
+ struct has_new_operator_impl {
+ template<class U>
+ static type_traits::yes_type check_sig1(
+ U*,
+ test<
+ void *(*)(std::size_t),
+ &U::operator new
+ >* = 0
+ );
+ template<class U>
+ static type_traits::no_type check_sig1(...);
+ template<class U>
+ static type_traits::yes_type check_sig2(
+ U*,
+ test<
+ void *(*)(std::size_t, const std::nothrow_t&),
+ &U::operator new
+ >* = 0
+ );
+ template<class U>
+ static type_traits::no_type check_sig2(...);
+ template<class U>
+ static type_traits::yes_type check_sig3(
+ U*,
+ test<
+ void *(*)(std::size_t, void*),
+ &U::operator new
+ >* = 0
+ );
+ template<class U>
+ static type_traits::no_type check_sig3(...);
+ template<class U>
+ static type_traits::yes_type check_sig4(
+ U*,
+ test<
+ void *(*)(std::size_t),
+ &U::operator new[]
+ >* = 0
+ );
+ template<class U>
+ static type_traits::no_type check_sig4(...);
+ template<class U>
+ static type_traits::yes_type check_sig5(
+ U*,
+ test<
+ void *(*)(std::size_t, const std::nothrow_t&),
+ &U::operator new[]
+ >* = 0
+ );
+ template<class U>
+ static type_traits::no_type check_sig5(...);
+ template<class U>
+ static type_traits::yes_type check_sig6(
+ U*,
+ test<
+ void *(*)(std::size_t, void*),
+ &U::operator new[]
+ >* = 0
+ );
+ template<class U>
+ static type_traits::no_type check_sig6(...);
+
+
+
@@ -113349,10 +113052,29 @@
+
+ #pragma warning(push)
+ #pragma warning(disable:6334)
+
+ static const unsigned s1 = sizeof(check_sig1<T>(0));
+ static const unsigned s2 = sizeof(check_sig2<T>(0));
+ static const unsigned s3 = sizeof(check_sig3<T>(0));
+ static const unsigned s4 = sizeof(check_sig4<T>(0));
+ static const unsigned s5 = sizeof(check_sig5<T>(0));
+ static const unsigned s6 = sizeof(check_sig6<T>(0));
+
+ #pragma warning(pop)
+
+
+ static const bool value = (::boost::type_traits::ice_or< (s1 == sizeof(type_traits::yes_type)), (s2 == sizeof(type_traits::yes_type)), (s3 == sizeof(type_traits::yes_type)), (s4 == sizeof(type_traits::yes_type)), (s5 == sizeof(type_traits::yes_type)), (s6 == sizeof(type_traits::yes_type)) >::value);
+ };
+}
+template< typename T > struct has_new_operator : ::boost::integral_constant<bool,::boost::detail::has_new_operator_impl<T>::value> { };
+}
@@ -113826,11 +113548,9 @@
-#pragma pack(push,8)
-extern "C" {
@@ -113840,13 +113560,6 @@
-struct _exception {
- int type;
- char *name;
- double arg1;
- double arg2;
- double retval;
- } ;
@@ -113857,9 +113570,6 @@
-struct _complex {
- double x,y;
- } ;
@@ -113891,7 +113601,6 @@
- extern double _HUGE;
@@ -113904,66 +113613,27 @@
- int __cdecl abs( int _X);
- long __cdecl labs( long _X);
- double __cdecl acos( double _X);
- double __cdecl asin( double _X);
- double __cdecl atan( double _X);
- double __cdecl atan2( double _Y, double _X);
- double __cdecl _copysign ( double _Number, double _Sign);
- double __cdecl _chgsign ( double _X);
- double __cdecl cos( double _X);
- double __cdecl cosh( double _X);
- double __cdecl exp( double _X);
- double __cdecl fabs( double _X);
- double __cdecl fmod( double _X, double _Y);
- double __cdecl log( double _X);
- double __cdecl log10( double _X);
- double __cdecl pow( double _X, double _Y);
- double __cdecl sin( double _X);
- double __cdecl sinh( double _X);
- double __cdecl tan( double _X);
- double __cdecl tanh( double _X);
- double __cdecl sqrt( double _X);
- double __cdecl atof( const char *_String);
- double __cdecl _atof_l( const char *_String, _locale_t _Locale);
- double __cdecl _cabs( struct _complex _Complex);
- double __cdecl ceil( double _X);
- double __cdecl floor( double _X);
- double __cdecl frexp( double _X, int * _Y);
- double __cdecl _hypot( double _X, double _Y);
- double __cdecl _j0( double _X );
- double __cdecl _j1( double _X );
- double __cdecl _jn(int _X, double _Y);
- double __cdecl ldexp( double _X, int _Y);
- int __cdecl _matherr( struct _exception * _Except);
- double __cdecl modf( double _X, double * _Y);
- double __cdecl _y0( double _X);
- double __cdecl _y1( double _X);
- double __cdecl _yn( int _X, double _Y);
- int __cdecl _set_SSE2_enable( int _Flag);
- float __cdecl _hypotf( float _X, float _Y);
@@ -114118,117 +113788,17 @@
-inline long double acosl( long double _X)
- {return (acos((double)_X)); }
-inline long double asinl( long double _X)
- {return (asin((double)_X)); }
-inline long double atanl( long double _X)
- {return (atan((double)_X)); }
-inline long double atan2l( long double _X, long double _Y)
- {return (atan2((double)_X, (double)_Y)); }
-inline long double ceill( long double _X)
- {return (ceil((double)_X)); }
-inline long double cosl( long double _X)
- {return (cos((double)_X)); }
-inline long double coshl( long double _X)
- {return (cosh((double)_X)); }
-inline long double expl( long double _X)
- {return (exp((double)_X)); }
-inline long double fabsl( long double _X)
- {return (fabs((double)_X)); }
-inline long double floorl( long double _X)
- {return (floor((double)_X)); }
-inline long double fmodl( long double _X, long double _Y)
- {return (fmod((double)_X, (double)_Y)); }
-inline long double frexpl( long double _X, int *_Y)
- {return (frexp((double)_X, _Y)); }
-inline long double ldexpl( long double _X, int _Y)
- {return (ldexp((double)_X, _Y)); }
-inline long double logl( long double _X)
- {return (log((double)_X)); }
-inline long double log10l( long double _X)
- {return (log10((double)_X)); }
-inline long double modfl( long double _X, long double *_Y)
- {double _Di, _Df = modf((double)_X, &_Di);
- *_Y = (long double)_Di;
- return (_Df); }
-inline long double powl( long double _X, long double _Y)
- {return (pow((double)_X, (double)_Y)); }
-inline long double sinl( long double _X)
- {return (sin((double)_X)); }
-inline long double sinhl( long double _X)
- {return (sinh((double)_X)); }
-inline long double sqrtl( long double _X)
- {return (sqrt((double)_X)); }
-inline long double tanl( long double _X)
- {return (tan((double)_X)); }
-inline long double tanhl( long double _X)
- {return (tanh((double)_X)); }
-inline long double _chgsignl( long double _Number)
-{
- return _chgsign(static_cast<double>(_Number));
-}
-inline long double _copysignl( long double _Number, long double _Sign)
-{
- return _copysign(static_cast<double>(_Number), static_cast<double>(_Sign));
-}
-inline float frexpf( float _X, int *_Y)
- {return ((float)frexp((double)_X, _Y)); }
-inline float fabsf( float _X)
- {return ((float)fabs((double)_X)); }
-inline float ldexpf( float _X, int _Y)
- {return ((float)ldexp((double)_X, _Y)); }
-inline float acosf( float _X)
- {return ((float)acos((double)_X)); }
-inline float asinf( float _X)
- {return ((float)asin((double)_X)); }
-inline float atanf( float _X)
- {return ((float)atan((double)_X)); }
-inline float atan2f( float _X, float _Y)
- {return ((float)atan2((double)_X, (double)_Y)); }
-inline float ceilf( float _X)
- {return ((float)ceil((double)_X)); }
-inline float cosf( float _X)
- {return ((float)cos((double)_X)); }
-inline float coshf( float _X)
- {return ((float)cosh((double)_X)); }
-inline float expf( float _X)
- {return ((float)exp((double)_X)); }
-inline float floorf( float _X)
- {return ((float)floor((double)_X)); }
-inline float fmodf( float _X, float _Y)
- {return ((float)fmod((double)_X, (double)_Y)); }
-inline float logf( float _X)
- {return ((float)log((double)_X)); }
-inline float log10f( float _X)
- {return ((float)log10((double)_X)); }
-inline float modff( float _X, float *_Y)
- { double _Di, _Df = modf((double)_X, &_Di);
- *_Y = (float)_Di;
- return ((float)_Df); }
-inline float powf( float _X, float _Y)
- {return ((float)pow((double)_X, (double)_Y)); }
-inline float sinf( float _X)
- {return ((float)sin((double)_X)); }
-inline float sinhf( float _X)
- {return ((float)sinh((double)_X)); }
-inline float sqrtf( float _X)
- {return ((float)sqrt((double)_X)); }
-inline float tanf( float _X)
- {return ((float)tan((double)_X)); }
-inline float tanhf( float _X)
- {return ((float)tanh((double)_X)); }
@@ -114250,150 +113820,23 @@
- extern double HUGE;
-__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: " "_cabs" ". See online help for details.")) double __cdecl cabs( struct _complex _X);
-__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: " "_hypot" ". See online help for details.")) double __cdecl hypot( double _X, double _Y);
-__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: " "_j0" ". See online help for details.")) double __cdecl j0( double _X);
-__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: " "_j1" ". See online help for details.")) double __cdecl j1( double _X);
-__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: " "_jn" ". See online help for details.")) double __cdecl jn( int _X, double _Y);
-__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: " "_y0" ". See online help for details.")) double __cdecl y0( double _X);
-__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: " "_y1" ". See online help for details.")) double __cdecl y1( double _X);
-__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: " "_yn" ". See online help for details.")) double __cdecl yn( int _X, double _Y);
-}
-extern "C++" {
-template<class _Ty> inline
- _Ty _Pow_int(_Ty _X, int _Y)
- {unsigned int _N;
- if (_Y >= 0)
- _N = (unsigned int)_Y;
- else
- _N = (unsigned int)(-_Y);
- for (_Ty _Z = _Ty(1); ; _X *= _X)
- {if ((_N & 1) != 0)
- _Z *= _X;
- if ((_N >>= 1) == 0)
- return (_Y < 0 ? _Ty(1) / _Z : _Z); }}
-inline long __cdecl abs( long _X)
- {return (labs(_X)); }
-inline double __cdecl abs( double _X)
- {return (fabs(_X)); }
-inline double __cdecl pow( double _X, int _Y)
- {return (_Pow_int(_X, _Y)); }
-inline float __cdecl abs( float _X)
- {return (fabsf(_X)); }
-inline float __cdecl acos( float _X)
- {return (acosf(_X)); }
-inline float __cdecl asin( float _X)
- {return (asinf(_X)); }
-inline float __cdecl atan( float _X)
- {return (atanf(_X)); }
-inline float __cdecl atan2( float _Y, float _X)
- {return (atan2f(_Y, _X)); }
-inline float __cdecl ceil( float _X)
- {return (ceilf(_X)); }
-inline float __cdecl cos( float _X)
- {return (cosf(_X)); }
-inline float __cdecl cosh( float _X)
- {return (coshf(_X)); }
-inline float __cdecl exp( float _X)
- {return (expf(_X)); }
-inline float __cdecl fabs( float _X)
- {return (fabsf(_X)); }
-inline float __cdecl floor( float _X)
- {return (floorf(_X)); }
-inline float __cdecl fmod( float _X, float _Y)
- {return (fmodf(_X, _Y)); }
-inline float __cdecl frexp( float _X, int * _Y)
- {return (frexpf(_X, _Y)); }
-inline float __cdecl ldexp( float _X, int _Y)
- {return (ldexpf(_X, _Y)); }
-inline float __cdecl log( float _X)
- {return (logf(_X)); }
-inline float __cdecl log10( float _X)
- {return (log10f(_X)); }
-inline float __cdecl modf( float _X, float * _Y)
- {return (modff(_X, _Y)); }
-inline float __cdecl pow( float _X, float _Y)
- {return (powf(_X, _Y)); }
-inline float __cdecl pow( float _X, int _Y)
- {return (_Pow_int(_X, _Y)); }
-inline float __cdecl sin( float _X)
- {return (sinf(_X)); }
-inline float __cdecl sinh( float _X)
- {return (sinhf(_X)); }
-inline float __cdecl sqrt( float _X)
- {return (sqrtf(_X)); }
-inline float __cdecl tan( float _X)
- {return (tanf(_X)); }
-inline float __cdecl tanh( float _X)
- {return (tanhf(_X)); }
-inline long double __cdecl abs( long double _X)
- {return (fabsl(_X)); }
-inline long double __cdecl acos( long double _X)
- {return (acosl(_X)); }
-inline long double __cdecl asin( long double _X)
- {return (asinl(_X)); }
-inline long double __cdecl atan( long double _X)
- {return (atanl(_X)); }
-inline long double __cdecl atan2( long double _Y, long double _X)
- {return (atan2l(_Y, _X)); }
-inline long double __cdecl ceil( long double _X)
- {return (ceill(_X)); }
-inline long double __cdecl cos( long double _X)
- {return (cosl(_X)); }
-inline long double __cdecl cosh( long double _X)
- {return (coshl(_X)); }
-inline long double __cdecl exp( long double _X)
- {return (expl(_X)); }
-inline long double __cdecl fabs( long double _X)
- {return (fabsl(_X)); }
-inline long double __cdecl floor( long double _X)
- {return (floorl(_X)); }
-inline long double __cdecl fmod( long double _X, long double _Y)
- {return (fmodl(_X, _Y)); }
-inline long double __cdecl frexp( long double _X, int * _Y)
- {return (frexpl(_X, _Y)); }
-inline long double __cdecl ldexp( long double _X, int _Y)
- {return (ldexpl(_X, _Y)); }
-inline long double __cdecl log( long double _X)
- {return (logl(_X)); }
-inline long double __cdecl log10( long double _X)
- {return (log10l(_X)); }
-inline long double __cdecl modf( long double _X, long double * _Y)
- {return (modfl(_X, _Y)); }
-inline long double __cdecl pow( long double _X, long double _Y)
- {return (powl(_X, _Y)); }
-inline long double __cdecl pow( long double _X, int _Y)
- {return (_Pow_int(_X, _Y)); }
-inline long double __cdecl sin( long double _X)
- {return (sinl(_X)); }
-inline long double __cdecl sinh( long double _X)
- {return (sinhl(_X)); }
-inline long double __cdecl sqrt( long double _X)
- {return (sqrtl(_X)); }
-inline long double __cdecl tan( long double _X)
- {return (tanl(_X)); }
-inline long double __cdecl tanh( long double _X)
- {return (tanhl(_X)); }
-}
-#pragma pack(pop)
@@ -114441,38 +113884,9 @@
-
-namespace std {
-using ::acosf; using ::asinf;
-using ::atanf; using ::atan2f; using ::ceilf;
-using ::cosf; using ::coshf; using ::expf;
-using ::fabsf; using ::floorf; using ::fmodf;
-using ::frexpf; using ::ldexpf; using ::logf;
-using ::log10f; using ::modff; using ::powf;
-using ::sinf; using ::sinhf; using ::sqrtf;
-using ::tanf; using ::tanhf;
-using ::acosl; using ::asinl;
-using ::atanl; using ::atan2l; using ::ceill;
-using ::cosl; using ::coshl; using ::expl;
-using ::fabsl; using ::floorl; using ::fmodl;
-using ::frexpl; using ::ldexpl; using ::logl;
-using ::log10l; using ::modfl; using ::powl;
-using ::sinl; using ::sinhl; using ::sqrtl;
-using ::tanl; using ::tanhl;
-using ::abs;
-using ::acos; using ::asin;
-using ::atan; using ::atan2; using ::ceil;
-using ::cos; using ::cosh; using ::exp;
-using ::fabs; using ::floor; using ::fmod;
-using ::frexp; using ::ldexp; using ::log;
-using ::log10; using ::modf; using ::pow;
-using ::sin; using ::sinh; using ::sqrt;
-using ::tan; using ::tanh;
-}
-
@@ -114485,48 +113899,40 @@
-#pragma once
-#pragma once
-#pragma once
-#pragma once
-#pragma once
-#pragma once
-#pragma once
- #pragma warning(disable: 4514)
@@ -114544,7 +113950,6 @@
-#pragma once
@@ -114562,7 +113967,6 @@
-
@@ -115411,6 +114815,7 @@
+namespace boost {
@@ -115418,14 +114823,20 @@
+namespace detail{
+template <class T>
+struct is_const_rvalue_filter
+{
+ static const bool value = ::boost::detail::cv_traits_imp<T*>::is_const;
+};
@@ -115433,8 +114844,11 @@
+}
+template< typename T > struct is_const : ::boost::integral_constant<bool,::boost::detail::is_const_rvalue_filter<T>::value> { };
+template< typename T > struct is_const< T& > : ::boost::integral_constant<bool,false> { };
@@ -115516,6 +114930,7 @@
+}
@@ -116467,7 +115882,6 @@
-#pragma once
@@ -116478,7 +115892,6 @@
-
@@ -116495,7 +115908,6 @@
-#pragma once
@@ -116516,7 +115928,6 @@
-
@@ -116749,11 +116160,18 @@
+namespace boost {
+namespace detail{
+template <class T>
+struct is_volatile_rval_filter
+{
+ static const bool value = ::boost::detail::cv_traits_imp<T*>::is_volatile;
+};
@@ -116765,12 +116183,15 @@
+}
+template< typename T > struct is_volatile : ::boost::integral_constant<bool,::boost::detail::is_volatile_rval_filter<T>::value> { };
+template< typename T > struct is_volatile< T& > : ::boost::integral_constant<bool,false> { };
@@ -116845,6 +116266,7 @@
+}
@@ -117704,10 +117126,21 @@
+namespace boost {
+namespace detail {
+template <typename T>
+struct has_trivial_assign_impl
+{
+ static const bool value = (::boost::type_traits::ice_and< ::boost::type_traits::ice_or< ::boost::is_pod<T>::value, __has_trivial_assign(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);
+};
+}
+template< typename T > struct has_trivial_assign : ::boost::integral_constant<bool,::boost::detail::has_trivial_assign_impl<T>::value> { };
+
+}
@@ -118300,11 +117733,9 @@
-#pragma pack(push,8)
-extern "C" {
@@ -118325,7 +117756,6 @@
-typedef int (__cdecl * _onexit_t)(void);
@@ -118348,15 +117778,7 @@
-typedef struct _div_t {
- int quot;
- int rem;
-} div_t;
-typedef struct _ldiv_t {
- long quot;
- long rem;
-} ldiv_t;
@@ -118370,11 +117792,6 @@
-#pragma pack(4)
-typedef struct {
- unsigned char ld[10];
-} _LDOUBLE;
-#pragma pack()
@@ -118390,32 +117807,17 @@
-typedef struct {
- double x;
-} _CRT_DOUBLE;
-typedef struct {
- float f;
-} _CRT_FLOAT;
-typedef struct {
-
- long double x;
-} _LONGDOUBLE;
-#pragma pack(4)
-typedef struct {
- unsigned char ld12[12];
-} _LDBL12;
-#pragma pack()
@@ -118435,13 +117837,10 @@
- extern int __mb_cur_max;
- int __cdecl ___mb_cur_max_func(void);
- int __cdecl ___mb_cur_max_l_func(_locale_t);
@@ -118480,16 +117879,11 @@
-typedef void (__cdecl *_purecall_handler)(void);
- _purecall_handler __cdecl _set_purecall_handler( _purecall_handler _Handler);
- _purecall_handler __cdecl _get_purecall_handler();
-extern "C++"
-{
@@ -118500,24 +117894,27 @@
+namespace boost {
+namespace detail{
+template <class T>
+struct has_nothrow_assign_imp{
+ static const bool value = (::boost::type_traits::ice_or< ::boost::has_trivial_assign<T>::value, __has_nothrow_assign(T) >::value);
+};
}
+template< typename T > struct has_nothrow_assign : ::boost::integral_constant<bool,::boost::detail::has_nothrow_assign_imp<T>::value> { };
+}
-typedef void (__cdecl *_invalid_parameter_handler)(const wchar_t *, const wchar_t *, const wchar_t *, unsigned int, uintptr_t);
- _invalid_parameter_handler __cdecl _set_invalid_parameter_handler( _invalid_parameter_handler _Handler);
- _invalid_parameter_handler __cdecl _get_invalid_parameter_handler(void);
-extern "C++"
-{
@@ -118530,7 +117927,6 @@
-}
@@ -118543,17 +117939,12 @@
- unsigned long * __cdecl __doserrno(void);
-errno_t __cdecl _set_doserrno( unsigned long _Value);
-errno_t __cdecl _get_doserrno( unsigned long * _Value);
- __declspec(deprecated("This function or variable may be unsafe. Consider using " "strerror" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) char ** __cdecl __sys_errlist(void);
- __declspec(deprecated("This function or variable may be unsafe. Consider using " "strerror" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) int * __cdecl __sys_nerr(void);
@@ -118570,9 +117961,6 @@
- extern int __argc;
- extern char ** __argv;
- extern wchar_t ** __wargv;
@@ -118586,12 +117974,8 @@
- extern char ** _environ;
- extern wchar_t ** _wenviron;
-__declspec(deprecated("This function or variable may be unsafe. Consider using " "_get_pgmptr" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) extern char * _pgmptr;
-__declspec(deprecated("This function or variable may be unsafe. Consider using " "_get_wpgmptr" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) extern wchar_t * _wpgmptr;
@@ -118608,31 +117992,19 @@
-errno_t __cdecl _get_pgmptr( char ** _Value);
-errno_t __cdecl _get_wpgmptr( wchar_t ** _Value);
-__declspec(deprecated("This function or variable may be unsafe. Consider using " "_get_fmode" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) extern int _fmode;
- errno_t __cdecl _set_fmode( int _Mode);
- errno_t __cdecl _get_fmode( int * _PMode);
-#pragma warning(push)
-#pragma warning(disable:4141)
-__declspec(deprecated("This function or variable may be unsafe. Consider using " "_get_osplatform" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) __declspec(deprecated("This function or variable has been superceded by newer library or operating system functionality. Consider using" "GetVersionEx" "instead. See online help for details.")) extern unsigned int _osplatform;
-__declspec(deprecated("This function or variable may be unsafe. Consider using " "_get_osver" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) __declspec(deprecated("This function or variable has been superceded by newer library or operating system functionality. Consider using" "GetVersionEx" "instead. See online help for details.")) extern unsigned int _osver;
-__declspec(deprecated("This function or variable may be unsafe. Consider using " "_get_winver" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) __declspec(deprecated("This function or variable has been superceded by newer library or operating system functionality. Consider using" "GetVersionEx" "instead. See online help for details.")) extern unsigned int _winver;
-__declspec(deprecated("This function or variable may be unsafe. Consider using " "_get_winmajor" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) __declspec(deprecated("This function or variable has been superceded by newer library or operating system functionality. Consider using" "GetVersionEx" "instead. See online help for details.")) extern unsigned int _winmajor;
-__declspec(deprecated("This function or variable may be unsafe. Consider using " "_get_winminor" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) __declspec(deprecated("This function or variable has been superceded by newer library or operating system functionality. Consider using" "GetVersionEx" "instead. See online help for details.")) extern unsigned int _winminor;
@@ -118649,25 +118021,14 @@
-#pragma warning(pop)
-__declspec(deprecated("This function or variable has been superceded by newer library or operating system functionality. Consider using" "GetVersionEx" "instead. See online help for details.")) errno_t __cdecl _get_osplatform( unsigned int * _Value);
-__declspec(deprecated("This function or variable has been superceded by newer library or operating system functionality. Consider using" "GetVersionEx" "instead. See online help for details.")) errno_t __cdecl _get_osver( unsigned int * _Value);
-__declspec(deprecated("This function or variable has been superceded by newer library or operating system functionality. Consider using" "GetVersionEx" "instead. See online help for details.")) errno_t __cdecl _get_winver( unsigned int * _Value);
-__declspec(deprecated("This function or variable has been superceded by newer library or operating system functionality. Consider using" "GetVersionEx" "instead. See online help for details.")) errno_t __cdecl _get_winmajor( unsigned int * _Value);
-__declspec(deprecated("This function or variable has been superceded by newer library or operating system functionality. Consider using" "GetVersionEx" "instead. See online help for details.")) errno_t __cdecl _get_winminor( unsigned int * _Value);
-extern "C++"
-{
-template <typename _CountofType, size_t _SizeOfArray>
-char (*__countof_helper( _CountofType (&_Array)[_SizeOfArray]))[_SizeOfArray];
-}
@@ -118675,12 +118036,8 @@
- __declspec(noreturn) void __cdecl exit( int _Code);
- __declspec(noreturn) void __cdecl _exit( int _Code);
- void __cdecl abort(void);
- unsigned int __cdecl _set_abort_behavior( unsigned int _Flags, unsigned int _Mask);
@@ -118689,7 +118046,6 @@
- __int64 __cdecl _abs64(__int64);
@@ -118715,126 +118071,40 @@
- int __cdecl atexit(void (__cdecl *)(void));
- int __cdecl atoi( const char *_Str);
- int __cdecl _atoi_l( const char *_Str, _locale_t _Locale);
- long __cdecl atol( const char *_Str);
- long __cdecl _atol_l( const char *_Str, _locale_t _Locale);
- void * __cdecl bsearch_s( const void * _Key, const void * _Base,
- rsize_t _NumOfElements, rsize_t _SizeOfElements,
- int (__cdecl * _PtFuncCompare)(void *, const void *, const void *), void * _Context);
- void * __cdecl bsearch( const void * _Key, const void * _Base,
- size_t _NumOfElements, size_t _SizeOfElements,
- int (__cdecl * _PtFuncCompare)(const void *, const void *));
- void __cdecl qsort_s( void * _Base,
- rsize_t _NumOfElements, rsize_t _SizeOfElements,
- int (__cdecl * _PtFuncCompare)(void *, const void *, const void *), void *_Context);
- void __cdecl qsort( void * _Base,
- size_t _NumOfElements, size_t _SizeOfElements,
- int (__cdecl * _PtFuncCompare)(const void *, const void *));
- unsigned short __cdecl _byteswap_ushort( unsigned short _Short);
- unsigned long __cdecl _byteswap_ulong ( unsigned long _Long);
- unsigned __int64 __cdecl _byteswap_uint64(unsigned __int64 _Int64);
- div_t __cdecl div( int _Numerator, int _Denominator);
- __declspec(deprecated("This function or variable may be unsafe. Consider using " "_dupenv_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) char * __cdecl getenv( const char * _VarName);
- errno_t __cdecl getenv_s( size_t * _ReturnSize, char * _DstBuf, rsize_t _DstSize, const char * _VarName);
-extern "C++" { template <size_t _Size> inline errno_t __cdecl getenv_s( size_t * _ReturnSize, char (&_Dest)[_Size], const char * _VarName) { return getenv_s(_ReturnSize, _Dest, _Size, _VarName); } }
- errno_t __cdecl _dupenv_s( char **_PBuffer, size_t * _PBufferSizeInBytes, const char * _VarName);
- errno_t __cdecl _itoa_s( int _Value, char * _DstBuf, size_t _Size, int _Radix);
-extern "C++" { template <size_t _Size> inline errno_t __cdecl _itoa_s( int _Value, char (&_Dest)[_Size], int _Radix) { return _itoa_s(_Value, _Dest, _Size, _Radix); } }
-__declspec(deprecated("This function or variable may be unsafe. Consider using " "_itoa_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) char * __cdecl _itoa( int _Value, char *_Dest, int _Radix);
- errno_t __cdecl _i64toa_s( __int64 _Val, char * _DstBuf, size_t _Size, int _Radix);
- __declspec(deprecated("This function or variable may be unsafe. Consider using " "_i64toa_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) char * __cdecl _i64toa( __int64 _Val, char * _DstBuf, int _Radix);
- errno_t __cdecl _ui64toa_s( unsigned __int64 _Val, char * _DstBuf, size_t _Size, int _Radix);
- __declspec(deprecated("This function or variable may be unsafe. Consider using " "_ui64toa_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) char * __cdecl _ui64toa( unsigned __int64 _Val, char * _DstBuf, int _Radix);
- __int64 __cdecl _atoi64( const char * _String);
- __int64 __cdecl _atoi64_l( const char * _String, _locale_t _Locale);
- __int64 __cdecl _strtoi64( const char * _String, char ** _EndPtr, int _Radix);
- __int64 __cdecl _strtoi64_l( const char * _String, char ** _EndPtr, int _Radix, _locale_t _Locale);
- unsigned __int64 __cdecl _strtoui64( const char * _String, char ** _EndPtr, int _Radix);
- unsigned __int64 __cdecl _strtoui64_l( const char * _String, char ** _EndPtr, int _Radix, _locale_t _Locale);
- ldiv_t __cdecl ldiv( long _Numerator, long _Denominator);
-extern "C++"
-{
- inline ldiv_t div( long _A1, long _A2)
- {
- return ldiv(_A1, _A2);
- }
-}
- errno_t __cdecl _ltoa_s( long _Val, char * _DstBuf, size_t _Size, int _Radix);
-extern "C++" { template <size_t _Size> inline errno_t __cdecl _ltoa_s( long _Value, char (&_Dest)[_Size], int _Radix) { return _ltoa_s(_Value, _Dest, _Size, _Radix); } }
-__declspec(deprecated("This function or variable may be unsafe. Consider using " "_ltoa_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) char * __cdecl _ltoa( long _Value, char *_Dest, int _Radix);
- int __cdecl mblen( const char * _Ch, size_t _MaxCount);
- int __cdecl _mblen_l( const char * _Ch, size_t _MaxCount, _locale_t _Locale);
- size_t __cdecl _mbstrlen( const char * _Str);
- size_t __cdecl _mbstrlen_l( const char *_Str, _locale_t _Locale);
- size_t __cdecl _mbstrnlen( const char *_Str, size_t _MaxCount);
- size_t __cdecl _mbstrnlen_l( const char *_Str, size_t _MaxCount, _locale_t _Locale);
- int __cdecl mbtowc( wchar_t * _DstCh, const char * _SrcCh, size_t _SrcSizeInBytes);
- int __cdecl _mbtowc_l( wchar_t * _DstCh, const char * _SrcCh, size_t _SrcSizeInBytes, _locale_t _Locale);
- errno_t __cdecl mbstowcs_s( size_t * _PtNumOfCharConverted, wchar_t * _DstBuf, size_t _SizeInWords, const char * _SrcBuf, size_t _MaxCount );
-extern "C++" { template <size_t _Size> inline errno_t __cdecl mbstowcs_s( size_t * _PtNumOfCharConverted, wchar_t (&_Dest)[_Size], const char * _Source, size_t _MaxCount) { return mbstowcs_s(_PtNumOfCharConverted, _Dest, _Size, _Source, _MaxCount); } }
-__declspec(deprecated("This function or variable may be unsafe. Consider using " "mbstowcs_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) size_t __cdecl mbstowcs( wchar_t *_Dest, const char * _Source, size_t _MaxCount);
- errno_t __cdecl _mbstowcs_s_l( size_t * _PtNumOfCharConverted, wchar_t * _DstBuf, size_t _SizeInWords, const char * _SrcBuf, size_t _MaxCount, _locale_t _Locale);
-extern "C++" { template <size_t _Size> inline errno_t __cdecl _mbstowcs_s_l( size_t * _PtNumOfCharConverted, wchar_t (&_Dest)[_Size], const char * _Source, size_t _MaxCount, _locale_t _Locale) { return _mbstowcs_s_l(_PtNumOfCharConverted, _Dest, _Size, _Source, _MaxCount, _Locale); } }
-__declspec(deprecated("This function or variable may be unsafe. Consider using " "_mbstowcs_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) size_t __cdecl _mbstowcs_l( wchar_t *_Dest, const char * _Source, size_t _MaxCount, _locale_t _Locale);
- int __cdecl rand(void);
- int __cdecl _set_error_mode( int _Mode);
- void __cdecl srand( unsigned int _Seed);
- double __cdecl strtod( const char * _Str, char ** _EndPtr);
- double __cdecl _strtod_l( const char * _Str, char ** _EndPtr, _locale_t _Locale);
- long __cdecl strtol( const char * _Str, char ** _EndPtr, int _Radix );
- long __cdecl _strtol_l( const char *_Str, char **_EndPtr, int _Radix, _locale_t _Locale);
- unsigned long __cdecl strtoul( const char * _Str, char ** _EndPtr, int _Radix);
- unsigned long __cdecl _strtoul_l(const char * _Str, char **_EndPtr, int _Radix, _locale_t _Locale);
- int __cdecl system( const char * _Command);
- errno_t __cdecl _ultoa_s( unsigned long _Val, char * _DstBuf, size_t _Size, int _Radix);
-extern "C++" { template <size_t _Size> inline errno_t __cdecl _ultoa_s( unsigned long _Value, char (&_Dest)[_Size], int _Radix) { return _ultoa_s(_Value, _Dest, _Size, _Radix); } }
-__declspec(deprecated("This function or variable may be unsafe. Consider using " "_ultoa_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) char * __cdecl _ultoa( unsigned long _Value, char *_Dest, int _Radix);
- __declspec(deprecated("This function or variable may be unsafe. Consider using " "wctomb_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) int __cdecl wctomb( char * _MbCh, wchar_t _WCh);
- __declspec(deprecated("This function or variable may be unsafe. Consider using " "_wctomb_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) int __cdecl _wctomb_l( char * _MbCh, wchar_t _WCh, _locale_t _Locale);
- errno_t __cdecl wctomb_s( int * _SizeConverted, char * _MbCh, rsize_t _SizeInBytes, wchar_t _WCh);
- errno_t __cdecl _wctomb_s_l( int * _SizeConverted, char * _MbCh, size_t _SizeInBytes, wchar_t _WCh, _locale_t _Locale);
- errno_t __cdecl wcstombs_s( size_t * _PtNumOfCharConverted, char * _Dst, size_t _DstSizeInBytes, const wchar_t * _Src, size_t _MaxCountInBytes);
-extern "C++" { template <size_t _Size> inline errno_t __cdecl wcstombs_s( size_t * _PtNumOfCharConverted, char (&_Dest)[_Size], const wchar_t * _Source, size_t _MaxCount) { return wcstombs_s(_PtNumOfCharConverted, _Dest, _Size, _Source, _MaxCount); } }
-__declspec(deprecated("This function or variable may be unsafe. Consider using " "wcstombs_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) size_t __cdecl wcstombs( char *_Dest, const wchar_t * _Source, size_t _MaxCount);
- errno_t __cdecl _wcstombs_s_l( size_t * _PtNumOfCharConverted, char * _Dst, size_t _DstSizeInBytes, const wchar_t * _Src, size_t _MaxCountInBytes, _locale_t _Locale);
-extern "C++" { template <size_t _Size> inline errno_t __cdecl _wcstombs_s_l( size_t * _PtNumOfCharConverted, char (&_Dest)[_Size], const wchar_t * _Source, size_t _MaxCount, _locale_t _Locale) { return _wcstombs_s_l(_PtNumOfCharConverted, _Dest, _Size, _Source, _MaxCount, _Locale); } }
-__declspec(deprecated("This function or variable may be unsafe. Consider using " "_wcstombs_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) size_t __cdecl _wcstombs_l( char *_Dest, const wchar_t * _Source, size_t _MaxCount, _locale_t _Locale);
@@ -118938,34 +118208,12 @@
- char * __cdecl _fullpath( char * _FullPath, const char * _Path, size_t _SizeInBytes);
- errno_t __cdecl _ecvt_s( char * _DstBuf, size_t _Size, double _Val, int _NumOfDights, int * _PtDec, int * _PtSign);
-extern "C++" { template <size_t _Size> inline errno_t __cdecl _ecvt_s( char (&_Dest)[_Size], double _Value, int _NumOfDigits, int * _PtDec, int * _PtSign) { return _ecvt_s(_Dest, _Size, _Value, _NumOfDigits, _PtDec, _PtSign); } }
- __declspec(deprecated("This function or variable may be unsafe. Consider using " "_ecvt_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) char * __cdecl _ecvt( double _Val, int _NumOfDigits, int * _PtDec, int * _PtSign);
- errno_t __cdecl _fcvt_s( char * _DstBuf, size_t _Size, double _Val, int _NumOfDec, int * _PtDec, int * _PtSign);
-extern "C++" { template <size_t _Size> inline errno_t __cdecl _fcvt_s( char (&_Dest)[_Size], double _Value, int _NumOfDigits, int * _PtDec, int * _PtSign) { return _fcvt_s(_Dest, _Size, _Value, _NumOfDigits, _PtDec, _PtSign); } }
- __declspec(deprecated("This function or variable may be unsafe. Consider using " "_fcvt_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) char * __cdecl _fcvt( double _Val, int _NumOfDec, int * _PtDec, int * _PtSign);
- errno_t __cdecl _gcvt_s( char * _DstBuf, size_t _Size, double _Val, int _NumOfDigits);
-extern "C++" { template <size_t _Size> inline errno_t __cdecl _gcvt_s( char (&_Dest)[_Size], double _Value, int _NumOfDigits) { return _gcvt_s(_Dest, _Size, _Value, _NumOfDigits); } }
- __declspec(deprecated("This function or variable may be unsafe. Consider using " "_gcvt_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) char * __cdecl _gcvt( double _Val, int _NumOfDigits, char * _DstBuf);
- int __cdecl _atodbl( _CRT_DOUBLE * _Result, char * _Str);
- int __cdecl _atoldbl( _LDOUBLE * _Result, char * _Str);
- int __cdecl _atoflt( _CRT_FLOAT * _Result, char * _Str);
- int __cdecl _atodbl_l( _CRT_DOUBLE * _Result, char * _Str, _locale_t _Locale);
- int __cdecl _atoldbl_l( _LDOUBLE * _Result, char * _Str, _locale_t _Locale);
- int __cdecl _atoflt_l( _CRT_FLOAT * _Result, char * _Str, _locale_t _Locale);
- unsigned long __cdecl _lrotl( unsigned long _Val, int _Shift);
- unsigned long __cdecl _lrotr( unsigned long _Val, int _Shift);
- errno_t __cdecl _makepath_s( char * _PathResult, size_t _Size, const char * _Drive, const char * _Dir, const char * _Filename,
- const char * _Ext);
-extern "C++" { template <size_t _Size> inline errno_t __cdecl _makepath_s( char (&_Path)[_Size], const char * _Drive, const char * _Dir, const char * _Filename, const char * _Ext) { return _makepath_s(_Path, _Size, _Drive, _Dir, _Filename, _Ext); } }
-__declspec(deprecated("This function or variable may be unsafe. Consider using " "_makepath_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) void __cdecl _makepath( char *_Path, const char * _Drive, const char * _Dir, const char * _Filename, const char * _Ext);
@@ -118992,36 +118240,17 @@
- _onexit_t __cdecl _onexit( _onexit_t _Func);
-
- int __cdecl _putenv( const char * _EnvString);
- errno_t __cdecl _putenv_s( const char * _Name, const char * _Value);
- unsigned int __cdecl _rotl( unsigned int _Val, int _Shift);
- unsigned __int64 __cdecl _rotl64( unsigned __int64 _Val, int _Shift);
- unsigned int __cdecl _rotr( unsigned int _Val, int _Shift);
- unsigned __int64 __cdecl _rotr64( unsigned __int64 _Val, int _Shift);
- errno_t __cdecl _searchenv_s( const char * _Filename, const char * _EnvVar, char * _ResultPath, size_t _SizeInBytes);
-extern "C++" { template <size_t _Size> inline errno_t __cdecl _searchenv_s( const char * _Filename, const char * _EnvVar, char (&_ResultPath)[_Size]) { return _searchenv_s(_Filename, _EnvVar, _ResultPath, _Size); } }
-__declspec(deprecated("This function or variable may be unsafe. Consider using " "_searchenv_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) void __cdecl _searchenv( const char * _Filename, const char * _EnvVar, char *_ResultPath);
-__declspec(deprecated("This function or variable may be unsafe. Consider using " "_splitpath_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) void __cdecl _splitpath( const char * _FullPath, char * _Drive, char * _Dir, char * _Filename, char * _Ext);
- errno_t __cdecl _splitpath_s( const char * _FullPath,
- char * _Drive, size_t _DriveSize,
- char * _Dir, size_t _DirSize,
- char * _Filename, size_t _FilenameSize,
- char * _Ext, size_t _ExtSize);
-extern "C++" { template <size_t _DriveSize, size_t _DirSize, size_t _NameSize, size_t _ExtSize> inline errno_t __cdecl _splitpath_s( const char *_Dest, char (&_Drive)[_DriveSize], char (&_Dir)[_DirSize], char (&_Name)[_NameSize], char (&_Ext)[_ExtSize]) { return _splitpath_s(_Dest, _Drive, _DriveSize, _Dir, _DirSize, _Name, _NameSize, _Ext, _ExtSize); } }
- void __cdecl _swab( char * _Buf1, char * _Buf2, int _SizeInBytes);
@@ -119063,9 +118292,6 @@
-__declspec(deprecated("This function or variable has been superceded by newer library or operating system functionality. Consider using" "SetErrorMode" "instead. See online help for details.")) void __cdecl _seterrormode( int _Mode);
-__declspec(deprecated("This function or variable has been superceded by newer library or operating system functionality. Consider using" "Beep" "instead. See online help for details.")) void __cdecl _beep( unsigned _Frequency, unsigned _Duration);
-__declspec(deprecated("This function or variable has been superceded by newer library or operating system functionality. Consider using" "Sleep" "instead. See online help for details.")) void __cdecl _sleep( unsigned long _Duration);
@@ -119084,30 +118310,16 @@
-#pragma warning(push)
-#pragma warning(disable: 4141)
-__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: " "_ecvt" ". See online help for details.")) __declspec(deprecated("This function or variable may be unsafe. Consider using " "_ecvt_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) char * __cdecl ecvt( double _Val, int _NumOfDigits, int * _PtDec, int * _PtSign);
-__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: " "_fcvt" ". See online help for details.")) __declspec(deprecated("This function or variable may be unsafe. Consider using " "_fcvt_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) char * __cdecl fcvt( double _Val, int _NumOfDec, int * _PtDec, int * _PtSign);
-__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: " "_gcvt" ". See online help for details.")) __declspec(deprecated("This function or variable may be unsafe. Consider using " "_fcvt_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) char * __cdecl gcvt( double _Val, int _NumOfDigits, char * _DstBuf);
-__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: " "_itoa" ". See online help for details.")) __declspec(deprecated("This function or variable may be unsafe. Consider using " "_itoa_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) char * __cdecl itoa( int _Val, char * _DstBuf, int _Radix);
-__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: " "_ltoa" ". See online help for details.")) __declspec(deprecated("This function or variable may be unsafe. Consider using " "_ltoa_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) char * __cdecl ltoa( long _Val, char * _DstBuf, int _Radix);
-__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: " "_putenv" ". See online help for details.")) int __cdecl putenv( const char * _EnvString);
-__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: " "_swab" ". See online help for details.")) void __cdecl swab( char * _Buf1, char * _Buf2, int _SizeInBytes);
-__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: " "_ultoa" ". See online help for details.")) __declspec(deprecated("This function or variable may be unsafe. Consider using " "_ultoa_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) char * __cdecl ultoa( unsigned long _Val, char * _Dstbuf, int _Radix);
-#pragma warning(pop)
-_onexit_t __cdecl onexit( _onexit_t _Func);
-}
-#pragma pack(pop)
@@ -119115,22 +118327,7 @@
-
-namespace std {
-using ::size_t; using ::div_t; using ::ldiv_t;
-using ::abort; using ::abs; using ::atexit;
-using ::atof; using ::atoi; using ::atol;
-using ::bsearch; using ::calloc; using ::div;
-using ::exit; using ::free; using ::getenv;
-using ::labs; using ::ldiv; using ::malloc;
-using ::mblen; using ::mbstowcs; using ::mbtowc;
-using ::qsort; using ::rand; using ::realloc;
-using ::srand; using ::strtod; using ::strtol;
-using ::strtoul; using ::system;
-using ::wcstombs; using ::wctomb;
-}
-
@@ -119143,19 +118340,16 @@
-#pragma once
-#pragma once
-#pragma once
@@ -119163,20 +118357,17 @@
-#pragma once
-#pragma once
-#pragma once
@@ -119185,7 +118376,6 @@
-#pragma once
@@ -119194,50 +118384,19 @@
-#pragma pack(push,8)
-#pragma warning(push,3)
-namespace std {
-
-struct _Unchecked_iterator_tag
- {
- };
-struct _Range_checked_iterator_tag
- {
- };
-
-struct _Unchanged_checked_iterator_base_type_tag
- {
- };
-struct _Different_checked_iterator_base_type_tag
- {
- };
-
-struct _Undefined_inner_type_tag
- {
- };
-
-struct _Undefined_move_tag
- {
- };
-struct _Swap_move_tag
- {
- };
-
-
-
@@ -119514,11 +118673,7 @@
-
-
-
-
@@ -119557,9 +118712,6 @@
-struct _Container_base
- {
- };
@@ -119571,33 +118723,16 @@
-
-
-struct _Iterator_base
- {
- typedef _Unchecked_iterator_tag _Checked_iterator_category;
- typedef _Unchanged_checked_iterator_base_type_tag _Checked_iterator_base_type;
- typedef _Undefined_inner_type_tag _Inner_type;
-
- _Iterator_base()
- : _Mycont(0)
- {
- }
- const _Container_base *_Mycont;
- };
-
-typedef _Iterator_base _Iterator_base_secure;
-
@@ -119608,886 +118743,136 @@
-
-
-
-struct input_iterator_tag
- {
- };
-struct output_iterator_tag
- {
- };
-struct forward_iterator_tag
- : public input_iterator_tag
- {
- };
-struct bidirectional_iterator_tag
- : public forward_iterator_tag
- {
- };
-struct random_access_iterator_tag
- : public bidirectional_iterator_tag
- {
- };
-struct _Int_iterator_tag
- {
- };
-struct _Float_iterator_tag
- {
- };
-
-struct _Nonscalar_ptr_iterator_tag
- {
- };
-struct _Scalar_ptr_iterator_tag
- {
- };
-
-template<class _Category,
- class _Ty,
- class _Diff = ptrdiff_t,
- class _Pointer = _Ty *,
- class _Reference = _Ty&>
- struct iterator
- : public _Iterator_base
- {
- typedef _Category iterator_category;
- typedef _Ty value_type;
- typedef _Diff difference_type;
- typedef _Diff distance_type;
- typedef _Pointer pointer;
- typedef _Reference reference;
- };
-template<class _Category,
- class _Ty,
- class _Diff = ptrdiff_t,
- class _Pointer = _Ty *,
- class _Reference = _Ty&,
- class _Base_class = _Iterator_base>
- struct _Iterator_with_base
- : public _Base_class
- {
- typedef _Category iterator_category;
- typedef _Ty value_type;
- typedef _Diff difference_type;
- typedef _Diff distance_type;
- typedef _Pointer pointer;
- typedef _Reference reference;
- };
-template<class _Ty,
- class _Diff,
- class _Pointer,
- class _Reference>
- struct _Bidit
- : public _Iterator_base
- {
- typedef bidirectional_iterator_tag iterator_category;
- typedef _Ty value_type;
- typedef _Diff difference_type;
- typedef _Diff distance_type;
- typedef _Pointer pointer;
- typedef _Reference reference;
- };
-template<class _Ty,
- class _Diff,
- class _Pointer,
- class _Reference>
- struct _Ranit
- : public _Iterator_base
- {
- typedef random_access_iterator_tag iterator_category;
- typedef _Ty value_type;
- typedef _Diff difference_type;
- typedef _Diff distance_type;
- typedef _Pointer pointer;
- typedef _Reference reference;
- };
-template<class _Ty,
- class _Diff,
- class _Pointer,
- class _Reference,
- class _Base_class>
- struct _Ranit_base
- : public _Base_class
- {
- typedef random_access_iterator_tag iterator_category;
- typedef _Ty value_type;
- typedef _Diff difference_type;
- typedef _Diff distance_type;
- typedef _Pointer pointer;
- typedef _Reference reference;
- };
-struct _Outit
- : public iterator<output_iterator_tag, void, void,
- void, void>
- {
- };
-template <class _Base_class>
-struct _Outit_with_base
- : public _Iterator_with_base<output_iterator_tag, void, void,
- void, void, _Base_class>
- {
- };
-
-template<class _Iter>
- struct iterator_traits
- {
- typedef typename _Iter::iterator_category iterator_category;
- typedef typename _Iter::value_type value_type;
- typedef typename _Iter::difference_type difference_type;
- typedef difference_type distance_type;
- typedef typename _Iter::pointer pointer;
- typedef typename _Iter::reference reference;
- };
-template<class _Ty>
- struct iterator_traits<_Ty *>
- {
- typedef random_access_iterator_tag iterator_category;
- typedef _Ty value_type;
- typedef ptrdiff_t difference_type;
- typedef ptrdiff_t distance_type;
- typedef _Ty *pointer;
- typedef _Ty& reference;
- };
-template<class _Ty>
- struct iterator_traits<const _Ty *>
- {
- typedef random_access_iterator_tag iterator_category;
- typedef _Ty value_type;
- typedef ptrdiff_t difference_type;
- typedef ptrdiff_t distance_type;
- typedef const _Ty *pointer;
- typedef const _Ty& reference;
- };
-template<> struct iterator_traits<_Bool>
- {
- typedef _Int_iterator_tag iterator_category;
- typedef _Bool value_type;
- typedef _Bool difference_type;
- typedef _Bool distance_type;
- typedef _Bool * pointer;
- typedef _Bool& reference;
- };
-template<> struct iterator_traits<char>
- {
- typedef _Int_iterator_tag iterator_category;
- typedef char value_type;
- typedef char difference_type;
- typedef char distance_type;
- typedef char * pointer;
- typedef char& reference;
- };
-template<> struct iterator_traits<signed char>
- {
- typedef _Int_iterator_tag iterator_category;
- typedef signed char value_type;
- typedef signed char difference_type;
- typedef signed char distance_type;
- typedef signed char * pointer;
- typedef signed char& reference;
- };
-template<> struct iterator_traits<unsigned char>
- {
- typedef _Int_iterator_tag iterator_category;
- typedef unsigned char value_type;
- typedef unsigned char difference_type;
- typedef unsigned char distance_type;
- typedef unsigned char * pointer;
- typedef unsigned char& reference;
- };
-
-template<> struct iterator_traits<wchar_t>
- {
- typedef _Int_iterator_tag iterator_category;
- typedef wchar_t value_type;
- typedef wchar_t difference_type;
- typedef wchar_t distance_type;
- typedef wchar_t * pointer;
- typedef wchar_t& reference;
- };
-
-template<> struct iterator_traits<short>
- {
- typedef _Int_iterator_tag iterator_category;
- typedef short value_type;
- typedef short difference_type;
- typedef short distance_type;
- typedef short * pointer;
- typedef short& reference;
- };
-template<> struct iterator_traits<unsigned short>
- {
- typedef _Int_iterator_tag iterator_category;
- typedef unsigned short value_type;
- typedef unsigned short difference_type;
- typedef unsigned short distance_type;
- typedef unsigned short * pointer;
- typedef unsigned short& reference;
- };
-template<> struct iterator_traits<int>
- {
- typedef _Int_iterator_tag iterator_category;
- typedef int value_type;
- typedef int difference_type;
- typedef int distance_type;
- typedef int * pointer;
- typedef int& reference;
- };
-template<> struct iterator_traits<unsigned int>
- {
- typedef _Int_iterator_tag iterator_category;
- typedef unsigned int value_type;
- typedef unsigned int difference_type;
- typedef unsigned int distance_type;
- typedef unsigned int * pointer;
- typedef unsigned int& reference;
- };
-template<> struct iterator_traits<long>
- {
- typedef _Int_iterator_tag iterator_category;
- typedef long value_type;
- typedef long difference_type;
- typedef long distance_type;
- typedef long * pointer;
- typedef long& reference;
- };
-template<> struct iterator_traits<unsigned long>
- {
- typedef _Int_iterator_tag iterator_category;
- typedef unsigned long value_type;
- typedef unsigned long difference_type;
- typedef unsigned long distance_type;
- typedef unsigned long * pointer;
- typedef unsigned long& reference;
- };
-template<> struct iterator_traits<double>
- {
- typedef _Float_iterator_tag iterator_category;
- typedef double value_type;
- typedef double difference_type;
- typedef double distance_type;
- typedef double * pointer;
- typedef double& reference;
- };
-template<> struct iterator_traits<float>
- {
- typedef _Float_iterator_tag iterator_category;
- typedef float value_type;
- typedef float difference_type;
- typedef float distance_type;
- typedef float * pointer;
- typedef float& reference;
- };
-
-template<> struct iterator_traits<__int64>
- {
- typedef _Int_iterator_tag iterator_category;
- typedef __int64 value_type;
- typedef __int64 difference_type;
- typedef __int64 distance_type;
- typedef __int64 * pointer;
- typedef __int64& reference;
- };
-template<> struct iterator_traits<unsigned __int64>
- {
- typedef _Int_iterator_tag iterator_category;
- typedef unsigned __int64 value_type;
- typedef unsigned __int64 difference_type;
- typedef unsigned __int64 distance_type;
- typedef unsigned __int64 * pointer;
- typedef unsigned __int64& reference;
- };
-
-
-template<class _Iter> inline
- typename iterator_traits<_Iter>::iterator_category
- __cdecl _Iter_cat(const _Iter&)
- {
- typename iterator_traits<_Iter>::iterator_category _Cat;
- return (_Cat);
- }
-
-
-
-template<class _Cat1, class _Cat2>
- class _Iter_random_helper
- {
- public:
- typedef forward_iterator_tag _Iter_random_cat;
- };
-template<>
- class _Iter_random_helper<random_access_iterator_tag, random_access_iterator_tag>
- {
- public:
- typedef random_access_iterator_tag _Iter_random_cat;
- };
-template<class _Cat1, class _Cat2, class _Cat3>
- class _Iter_random_helper3
- {
- public:
- typedef forward_iterator_tag _Iter_random_cat;
- };
-template<>
- class _Iter_random_helper3<random_access_iterator_tag, random_access_iterator_tag, random_access_iterator_tag>
- {
- public:
- typedef random_access_iterator_tag _Iter_random_cat;
- };
-template<class _Iter1, class _Iter2> inline
- typename _Iter_random_helper<
- typename iterator_traits<_Iter1>::iterator_category,
- typename iterator_traits<_Iter2>::iterator_category>::_Iter_random_cat
- __cdecl _Iter_random(const _Iter1&, const _Iter2&)
- {
- typename _Iter_random_helper<
- iterator_traits<_Iter1>::iterator_category,
- iterator_traits<_Iter2>::iterator_category>::_Iter_random_cat _Cat;
- return (_Cat);
- }
-template<class _Iter1, class _Iter2, class _Iter3> inline
- typename _Iter_random_helper3<
- typename iterator_traits<_Iter1>::iterator_category,
- typename iterator_traits<_Iter2>::iterator_category,
- typename iterator_traits<_Iter3>::iterator_category>::_Iter_random_cat
- __cdecl _Iter_random(const _Iter1&, const _Iter2&, const _Iter3&)
- {
- typename _Iter_random_helper3<
- iterator_traits<_Iter1>::iterator_category,
- iterator_traits<_Iter2>::iterator_category,
- iterator_traits<_Iter3>::iterator_category>::_Iter_random_cat _Cat;
- return (_Cat);
- }
-
-
- template <bool _Cond, class _Ty1, class _Ty2>
- class _If
- {
- public:
- typedef _Ty2 _Result;
- };
- template <class _Ty1, class _Ty2>
- class _If<true, _Ty1, _Ty2>
- {
- public:
- typedef _Ty1 _Result;
- };
-
- template <bool _Secure_validation>
- class _Secure_validation_helper
- {
- public:
- typedef _Unchecked_iterator_tag _Checked_iterator_category;
- };
- template <>
- class _Secure_validation_helper<true>
- {
- public:
- typedef _Range_checked_iterator_tag _Checked_iterator_category;
- };
-
- template <class _Iter, bool _Inherits_from_iterator_base>
- class _Checked_iterator_category_helper
- {
- public:
- typedef _Unchecked_iterator_tag _Checked_cat;
- };
- template <class _Iter>
- class _Checked_iterator_category_helper<_Iter, true>
- {
- public:
- typedef typename _Iter::_Checked_iterator_category _Checked_cat;
- };
- template <class _Iter>
- class _Checked_iterator_category
- {
- public:
- typedef typename _Checked_iterator_category_helper<_Iter, __is_base_of(_Iterator_base, _Iter)>::_Checked_cat _Checked_cat;
- };
- template<class _Iter>
- inline
- typename _Checked_iterator_category<_Iter>::_Checked_cat _Checked_cat(const _Iter&)
- {
- typename _Checked_iterator_category<_Iter>::_Checked_cat _Cat;
- return (_Cat);
- }
-
- template <class _Iter, bool _Inherits_from_iterator_base>
- class _Checked_iterator_base_helper2
- {
- public:
- typedef _Unchanged_checked_iterator_base_type_tag _Checked_iterator_base_type;
- };
- template <class _Iter>
- class _Checked_iterator_base_helper2<_Iter, true>
- {
- public:
- typedef typename _Iter::_Checked_iterator_base_type _Checked_iterator_base_type;
- };
- template <class _Iter, class _Base_type>
- class _Checked_iterator_base_helper1
- {
- public:
- typedef _Different_checked_iterator_base_type_tag _Base_type_tag;
- typedef _Base_type _Checked_iterator_base_type;
- };
- template <class _Iter>
- class _Checked_iterator_base_helper1<_Iter, _Unchanged_checked_iterator_base_type_tag>
- {
- public:
- typedef _Unchanged_checked_iterator_base_type_tag _Base_type_tag;
- typedef _Iter _Checked_iterator_base_type;
- };
- template <class _Iter>
- class _Checked_iterator_base_helper
- {
- public:
- typedef _Checked_iterator_base_helper2<_Iter, __is_base_of(_Iterator_base, _Iter)> _Base_helper2;
- typedef _Checked_iterator_base_helper1<_Iter, typename _Base_helper2::_Checked_iterator_base_type > _Base_helper1;
- typedef typename _Base_helper1::_Base_type_tag _Checked_iterator_base_type_tag;
- typedef typename _Base_helper1::_Checked_iterator_base_type _Checked_iterator_base_type;
- };
- template<class _Iter, class _Base_tag>
- inline
- typename _Checked_iterator_base_helper<_Iter>::_Checked_iterator_base_type
- __cdecl _Checked_base(const _Iter &_It, _Base_tag)
- {
- return _It._Checked_iterator_base();
- }
- template<class _Iter>
- inline
- typename _Checked_iterator_base_helper<_Iter>::_Checked_iterator_base_type
- __cdecl _Checked_base(const _Iter &_It, _Unchanged_checked_iterator_base_type_tag)
- {
- return _It;
- }
- template<class _Iter, class _Base_tag>
- inline
- typename _Checked_iterator_base_helper<_Iter>::_Checked_iterator_base_type
- __cdecl _Checked_base(_Iter &_It, _Base_tag)
- {
- return _It._Checked_iterator_base();
- }
- template<class _Iter>
- inline
- typename _Checked_iterator_base_helper<_Iter>::_Checked_iterator_base_type
- __cdecl _Checked_base(_Iter &_It, _Unchanged_checked_iterator_base_type_tag)
- {
- return _It;
- }
- template<class _Iter>
- inline
- typename _Checked_iterator_base_helper<_Iter>::_Checked_iterator_base_type
- __cdecl _Checked_base(const _Iter &_It)
- {
- typename _Checked_iterator_base_helper<_Iter>::_Checked_iterator_base_type_tag _Base_tag;
- return _Checked_base(_It, _Base_tag);
- }
- template<class _Iter>
- inline
- typename _Checked_iterator_base_helper<_Iter>::_Checked_iterator_base_type
- __cdecl _Checked_base(_Iter &_It)
- {
- typename _Checked_iterator_base_helper<_Iter>::_Checked_iterator_base_type_tag _Base_tag;
- return _Checked_base(_It, _Base_tag);
- }
-
- template<class _DstIter, class _BaseIter>
- inline
- void __cdecl _Checked_assign_from_base(_DstIter &_Dest, const _BaseIter &_Src)
- {
- _Dest._Checked_iterator_assign_from_base(_Src);
- }
- template<class _Iter>
- inline
- void __cdecl _Checked_assign_from_base(_Iter &_Dest, const _Iter &_Src)
- {
- _Dest = _Src;
- }
-
-
-
-
-
- template <class _Value>
- class _Move_operation_category
- {
- public:
- typedef _Undefined_move_tag _Move_cat;
- };
- template<class _Iter>
- inline
- typename _Move_operation_category<typename iterator_traits<_Iter>::value_type>::_Move_cat _Move_cat(const _Iter&)
- {
- typename _Move_operation_category<typename iterator_traits<_Iter>::value_type>::_Move_cat _Cat;
- return (_Cat);
- }
-
-template<class _T1, class _T2, class _Checked_Cat1, class _Checked_Cat2>
-struct _Ptr_cat_with_checked_cat_helper
- {
- typedef _Nonscalar_ptr_iterator_tag _Ptr_cat;
- };
-template<class _T1, class _T2>
-struct _Ptr_cat_helper
- {
- typedef typename _Ptr_cat_with_checked_cat_helper<_T1, _T2,
- typename _Checked_iterator_category<_T1>::_Checked_cat,
- typename _Checked_iterator_category<_T2>::_Checked_cat>::_Ptr_cat _Ptr_cat;
- };
-template<class _T1, class _T2, class _Checked_Cat1>
-struct _Ptr_cat_with_checked_cat_helper<_T1, _T2, _Checked_Cat1, _Range_checked_iterator_tag>
- {
- typedef typename _Ptr_cat_helper<_T1, typename _T2::_Inner_type>::_Ptr_cat _Ptr_cat;
- };
-template<class _T1, class _T2, class _Checked_Cat2>
-struct _Ptr_cat_with_checked_cat_helper<_T1, _T2, _Range_checked_iterator_tag, _Checked_Cat2>
- {
- typedef typename _Ptr_cat_helper<typename _T1::_Inner_type, _T2>::_Ptr_cat _Ptr_cat;
- };
-template<class _T1, class _T2>
-struct _Ptr_cat_with_checked_cat_helper<_T1, _T2, _Range_checked_iterator_tag, _Range_checked_iterator_tag>
- {
- typedef typename _Ptr_cat_helper<typename _T1::_Inner_type, typename _T2::_Inner_type>::_Ptr_cat _Ptr_cat;
- };
-template<class _T1>
-struct _Ptr_cat_helper<_T1, _Undefined_inner_type_tag>
- {
- typedef _Nonscalar_ptr_iterator_tag _Ptr_cat;
- };
-template<class _T2>
-struct _Ptr_cat_helper<_Undefined_inner_type_tag, _T2>
- {
- typedef _Nonscalar_ptr_iterator_tag _Ptr_cat;
- };
-template<>
-struct _Ptr_cat_helper<_Undefined_inner_type_tag, _Undefined_inner_type_tag>
- {
- typedef _Nonscalar_ptr_iterator_tag _Ptr_cat;
- };
-
-template<>
-struct _Ptr_cat_helper<_Bool *, _Bool *>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-template<>
-struct _Ptr_cat_helper<const _Bool *, _Bool *>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-template<>
-struct _Ptr_cat_helper<char *, char *>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-template<>
-struct _Ptr_cat_helper<const char *, char *>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-template<>
-struct _Ptr_cat_helper<signed char *, signed char *>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-template<>
-struct _Ptr_cat_helper<const signed char *, signed char *>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-template<>
-struct _Ptr_cat_helper<unsigned char *, unsigned char *>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-template<>
-struct _Ptr_cat_helper<const unsigned char *, unsigned char *>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-
-template<>
-struct _Ptr_cat_helper<wchar_t *, wchar_t *>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-template<>
-struct _Ptr_cat_helper<const wchar_t *, wchar_t *>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-
-template<>
-struct _Ptr_cat_helper<short *, short *>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-template<>
-struct _Ptr_cat_helper<const short *, short *>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-template<>
-struct _Ptr_cat_helper<unsigned short *, unsigned short *>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-template<>
-struct _Ptr_cat_helper<const unsigned short *, unsigned short *>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-template<>
-struct _Ptr_cat_helper<int *, int *>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-template<>
-struct _Ptr_cat_helper<const int *, int *>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-template<>
-struct _Ptr_cat_helper<unsigned int *, unsigned int *>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-template<>
-struct _Ptr_cat_helper<const unsigned int *, unsigned int *>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-template<>
-struct _Ptr_cat_helper<long *, long *>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-template<>
-struct _Ptr_cat_helper<const long *, long *>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-template<>
-struct _Ptr_cat_helper<unsigned long *, unsigned long *>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-template<>
-struct _Ptr_cat_helper<const unsigned long *, unsigned long *>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-template<>
-struct _Ptr_cat_helper<float *, float *>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-template<>
-struct _Ptr_cat_helper<const float *, float *>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-template<>
-struct _Ptr_cat_helper<double *, double *>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-template<>
-struct _Ptr_cat_helper<const double *, double *>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-template<>
-struct _Ptr_cat_helper<long double *, long double *>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-template<>
-struct _Ptr_cat_helper<const long double *, long double *>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-
-template<>
-struct _Ptr_cat_helper<__int64 *, __int64 *>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-template<>
-struct _Ptr_cat_helper<const __int64 *, __int64 *>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-template<>
-struct _Ptr_cat_helper<unsigned __int64 *, unsigned __int64 *>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-template<>
-struct _Ptr_cat_helper<const unsigned __int64 *, unsigned __int64 *>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-
-template<class _Ty>
-struct _Ptr_cat_helper<_Ty **, _Ty **>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-template<class _Ty>
-struct _Ptr_cat_helper<_Ty **, const _Ty **>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-template<class _Ty>
-struct _Ptr_cat_helper<_Ty *const *, _Ty **>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-template<class _Ty>
-struct _Ptr_cat_helper<_Ty *const *, const _Ty **>
- {
- typedef _Scalar_ptr_iterator_tag _Ptr_cat;
- };
-template<class _T1, class _T2> inline
-typename _Ptr_cat_helper<_T1, _T2>::_Ptr_cat __cdecl _Ptr_cat(_T1&, _T2&)
- {
- typename _Ptr_cat_helper<_T1, _T2>::_Ptr_cat _Cat;
- return (_Cat);
- }
-
-
-
@@ -120666,47 +119051,11 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -120715,114 +119064,29 @@
-
-template<class _Iter> inline
- typename iterator_traits<_Iter>::value_type *__cdecl _Val_type(_Iter)
- {
- return (0);
- }
-
-template<class _InIt,
- class _Diff> inline
- void __cdecl advance(_InIt& _Where, _Diff _Off)
- {
- _Advance(_Where, _Off, _Iter_cat(_Where));
- }
-template<class _InIt,
- class _Diff> inline
- void __cdecl _Advance(_InIt& _Where, _Diff _Off, input_iterator_tag)
- {
-
- for (; 0 < _Off; --_Off)
- ++_Where;
- }
-template<class _FI,
- class _Diff> inline
- void __cdecl _Advance(_FI& _Where, _Diff _Off, forward_iterator_tag)
- {
-
- for (; 0 < _Off; --_Off)
- ++_Where;
- }
-#pragma warning(push)
-#pragma warning(disable: 6295)
-template<class _BI,
- class _Diff> inline
- void __cdecl _Advance(_BI& _Where, _Diff _Off, bidirectional_iterator_tag)
- {
- for (; 0 < _Off; --_Off)
- ++_Where;
- for (; _Off < 0; ++_Off)
- --_Where;
- }
-#pragma warning(pop)
-template<class _RI,
- class _Diff> inline
- void __cdecl _Advance(_RI& _Where, _Diff _Off, random_access_iterator_tag)
- {
- _Where += _Off;
- }
-
-template<class _Iter> inline
- typename iterator_traits<_Iter>::difference_type
- * __cdecl _Dist_type(_Iter)
- {
- return (0);
- }
-
-template<class _InIt,
- class _Diff> inline
- void __cdecl _Distance2(_InIt _First, _InIt _Last, _Diff& _Off,
- input_iterator_tag)
- {
- for (; _First != _Last; ++_First)
- ++_Off;
- }
-template<class _FwdIt,
- class _Diff> inline
- void __cdecl _Distance2(_FwdIt _First, _FwdIt _Last, _Diff& _Off,
- forward_iterator_tag)
- {
- for (; _First != _Last; ++_First)
- ++_Off;
- }
-template<class _BidIt,
- class _Diff> inline
- void __cdecl _Distance2(_BidIt _First, _BidIt _Last, _Diff& _Off,
- bidirectional_iterator_tag)
- {
- for (; _First != _Last; ++_First)
- ++_Off;
- }
-template<class _RanIt,
- class _Diff> inline
- void __cdecl _Distance2(_RanIt _First, _RanIt _Last, _Diff& _Off,
- random_access_iterator_tag)
- {
-
@@ -120830,1239 +119094,274 @@
- _Off += _Last - _First;
- }
-template<class _InIt> inline
- typename iterator_traits<_InIt>::difference_type
- __cdecl distance(_InIt _First, _InIt _Last)
- {
- typename iterator_traits<_InIt>::difference_type _Off = 0;
- _Distance2(_First, _Last, _Off, _Iter_cat(_First));
- return (_Off);
- }
-template<class _InIt,
- class _Diff> inline
- void __cdecl _Distance(_InIt _First, _InIt _Last, _Diff& _Off)
- {
- _Distance2(_First, _Last, _Off, _Iter_cat(_First));
- }
-
-template<class _RanIt>
- class reverse_iterator
- : public _Iterator_base_secure
- {
-public:
- typedef reverse_iterator<_RanIt> _Myt;
- typedef typename iterator_traits<_RanIt>::iterator_category iterator_category;
- typedef typename iterator_traits<_RanIt>::value_type value_type;
- typedef typename iterator_traits<_RanIt>::difference_type difference_type;
- typedef typename iterator_traits<_RanIt>::difference_type distance_type;
- typedef typename iterator_traits<_RanIt>::pointer pointer;
- typedef typename iterator_traits<_RanIt>::reference reference;
- typedef _RanIt iterator_type;
- reverse_iterator()
- {
- }
- explicit reverse_iterator(_RanIt _Right)
- : current(_Right)
- {
- }
- template<class _Other>
- reverse_iterator(const reverse_iterator<_Other>& _Right)
- : current(_Right.base())
- {
- }
- _RanIt base() const
- {
- return (current);
- }
- typedef typename ::std:: _Checked_iterator_category<_RanIt>::_Checked_cat _Checked_iterator_category;
- typedef reverse_iterator<typename _Checked_iterator_base_helper<_RanIt>::_Checked_iterator_base_type> _Checked_iterator_base_type;
-
- _Checked_iterator_base_type _Checked_iterator_base() const
- {
- typename _Checked_iterator_base_type _Base(::std:: _Checked_base(current));
- return _Base;
- }
- void _Checked_iterator_assign_from_base(_Checked_iterator_base_type _Base)
- {
- ::std:: _Checked_assign_from_base(current, _Base.base());
- }
- reference operator*() const
- {
- _RanIt _Tmp = current;
- return (*--_Tmp);
- }
- pointer operator->() const
- {
- return (&**this);
- }
- _Myt& operator++()
- {
- --current;
- return (*this);
- }
- _Myt operator++(int)
- {
- _Myt _Tmp = *this;
- --current;
- return (_Tmp);
- }
- _Myt& operator--()
- {
- ++current;
- return (*this);
- }
- _Myt operator--(int)
- {
- _Myt _Tmp = *this;
- ++current;
- return (_Tmp);
- }
- template<class _Other>
- bool _Equal(const reverse_iterator<_Other>& _Right) const
- {
- return (current == _Right.base());
- }
- _Myt& operator+=(difference_type _Off)
- {
- current -= _Off;
- return (*this);
- }
- _Myt operator+(difference_type _Off) const
- {
- return (_Myt(current - _Off));
- }
- _Myt& operator-=(difference_type _Off)
- {
- current += _Off;
- return (*this);
- }
- _Myt operator-(difference_type _Off) const
- {
- return (_Myt(current + _Off));
- }
- reference operator[](difference_type _Off) const
- {
- return (*(*this + _Off));
- }
- template<class _Other>
- bool _Less(const reverse_iterator<_Other>& _Right) const
- {
- return (_Right.base() < current);
- }
- template<class _Other>
- difference_type _Minus(const reverse_iterator<_Other>& _Right) const
- {
- return (_Right.base() - current);
- }
-protected:
- _RanIt current;
- };
-
-template<class _RanIt,
- class _Diff> inline
- reverse_iterator<_RanIt> __cdecl operator+(_Diff _Off,
- const reverse_iterator<_RanIt>& _Right)
- {
- return (_Right + _Off);
- }
-template<class _RanIt1,
- class _RanIt2> inline
- typename reverse_iterator<_RanIt1>::difference_type
- __cdecl operator-(const reverse_iterator<_RanIt1>& _Left,
- const reverse_iterator<_RanIt2>& _Right)
- {
- return (_Left._Minus(_Right));
- }
-template<class _RanIt1,
- class _RanIt2> inline
- bool __cdecl operator==(const reverse_iterator<_RanIt1>& _Left,
- const reverse_iterator<_RanIt2>& _Right)
- {
- return (_Left._Equal(_Right));
- }
-template<class _RanIt1,
- class _RanIt2> inline
- bool __cdecl operator!=(const reverse_iterator<_RanIt1>& _Left,
- const reverse_iterator<_RanIt2>& _Right)
- {
- return (!(_Left == _Right));
- }
-template<class _RanIt1,
- class _RanIt2> inline
- bool __cdecl operator<(const reverse_iterator<_RanIt1>& _Left,
- const reverse_iterator<_RanIt2>& _Right)
- {
- return (_Left._Less(_Right));
- }
-template<class _RanIt1,
- class _RanIt2> inline
- bool __cdecl operator>(const reverse_iterator<_RanIt1>& _Left,
- const reverse_iterator<_RanIt2>& _Right)
- {
- return (_Right < _Left);
- }
-template<class _RanIt1,
- class _RanIt2> inline
- bool __cdecl operator<=(const reverse_iterator<_RanIt1>& _Left,
- const reverse_iterator<_RanIt2>& _Right)
- {
- return (!(_Right < _Left));
- }
-template<class _RanIt1,
- class _RanIt2> inline
- bool __cdecl operator>=(const reverse_iterator<_RanIt1>& _Left,
- const reverse_iterator<_RanIt2>& _Right)
- {
- return (!(_Left < _Right));
- }
-
-template<class _BidIt,
- class _Ty,
- class _Reference = _Ty&,
- class _Pointer = _Ty *,
- class _Diff = ptrdiff_t>
- class reverse_bidirectional_iterator
- : public iterator<bidirectional_iterator_tag, _Ty, _Diff,
- _Pointer, _Reference>
- {
-public:
- typedef reverse_bidirectional_iterator<_BidIt, _Ty, _Reference,
- _Pointer, _Diff> _Myt;
- typedef _BidIt iterator_type;
- reverse_bidirectional_iterator()
- {
- }
- explicit reverse_bidirectional_iterator(_BidIt _Right)
- : current(_Right)
- {
- }
- _BidIt base() const
- {
- return (current);
- }
- _Reference operator*() const
- {
- _BidIt _Tmp = current;
- return (*--_Tmp);
- }
- _Pointer operator->() const
- {
- _Reference _Tmp = **this;
- return (&_Tmp);
- }
- _Myt& operator++()
- {
- --current;
- return (*this);
- }
- _Myt operator++(int)
- {
- _Myt _Tmp = *this;
- --current;
- return (_Tmp);
- }
- _Myt& operator--()
- {
- ++current;
- return (*this);
- }
- _Myt operator--(int)
- {
- _Myt _Tmp = *this;
- ++current;
- return (_Tmp);
- }
- bool operator==(const _Myt& _Right) const
- {
- return (current == _Right.current);
- }
- bool operator!=(const _Myt& _Right) const
- {
- return (!(*this == _Right));
- }
-protected:
- _BidIt current;
- };
-
-template<class _BidIt,
- class _BidIt2 = _BidIt>
- class _Revbidit
- : public iterator<
- typename iterator_traits<_BidIt>::iterator_category,
- typename iterator_traits<_BidIt>::value_type,
- typename iterator_traits<_BidIt>::difference_type,
- typename iterator_traits<_BidIt>::pointer,
- typename iterator_traits<_BidIt>::reference>
- {
-public:
- typedef _Revbidit<_BidIt, _BidIt2> _Myt;
- typedef typename iterator_traits<_BidIt>::difference_type _Diff;
- typedef typename iterator_traits<_BidIt>::pointer _Pointer;
- typedef typename iterator_traits<_BidIt>::reference _Reference;
- typedef _BidIt iterator_type;
- _Revbidit()
- {
- }
- explicit _Revbidit(_BidIt _Right)
- : current(_Right)
- {
- }
- _Revbidit(const _Revbidit<_BidIt2>& _Other)
- : current (_Other.base())
- {
- }
- _BidIt base() const
- {
- return (current);
- }
- _Reference operator*() const
- {
- _BidIt _Tmp = current;
- return (*--_Tmp);
- }
- _Pointer operator->() const
- {
- _Reference _Tmp = **this;
- return (&_Tmp);
- }
- _Myt& operator++()
- {
- --current;
- return (*this);
- }
- _Myt operator++(int)
- {
- _Myt _Tmp = *this;
- --current;
- return (_Tmp);
- }
- _Myt& operator--()
- {
- ++current;
- return (*this);
- }
- _Myt operator--(int)
- {
- _Myt _Tmp = *this;
- ++current;
- return (_Tmp);
- }
- bool operator==(const _Myt& _Right) const
- {
- return (current == _Right.current);
- }
- bool operator!=(const _Myt& _Right) const
- {
- return (!(*this == _Right));
- }
-protected:
- _BidIt current;
- };
-
-template<class _Elem,
- class _Traits>
- class istreambuf_iterator
- : public _Iterator_with_base<input_iterator_tag,
- _Elem, typename _Traits::off_type, _Elem *, _Elem&, _Iterator_base_secure>
- {
- typedef istreambuf_iterator<_Elem, _Traits> _Myt;
-public:
- typedef _Elem char_type;
- typedef _Traits traits_type;
- typedef basic_streambuf<_Elem, _Traits> streambuf_type;
- typedef basic_istream<_Elem, _Traits> istream_type;
- typedef typename traits_type::int_type int_type;
- istreambuf_iterator(streambuf_type *_Sb = 0) throw ()
- : _Strbuf(_Sb), _Got(_Sb == 0)
- {
- }
- istreambuf_iterator(istream_type& _Istr) throw ()
- : _Strbuf(_Istr.rdbuf()), _Got(_Istr.rdbuf() == 0)
- {
- }
- _Elem operator*() const
- {
- if (!_Got)
- ((_Myt *)this)->_Peek();
-
- return (_Val);
- }
- _Myt& operator++()
- {
-
- _Inc();
- return (*this);
- }
- _Myt operator++(int)
- {
- if (!_Got)
- _Peek();
- _Myt _Tmp = *this;
- ++*this;
- return (_Tmp);
- }
- bool equal(const _Myt& _Right) const
- {
- if (!_Got)
- ((_Myt *)this)->_Peek();
- if (!_Right._Got)
- ((_Myt *)&_Right)->_Peek();
- return (_Strbuf == 0 && _Right._Strbuf == 0
- || _Strbuf != 0 && _Right._Strbuf != 0);
- }
-private:
- void _Inc()
- {
- if (_Strbuf == 0
- || traits_type::eq_int_type(traits_type::eof(),
- _Strbuf->sbumpc()))
- _Strbuf = 0, _Got = true;
- else
- _Got = false;
- }
- _Elem _Peek()
- {
- int_type _Meta;
- if (_Strbuf == 0
- || traits_type::eq_int_type(traits_type::eof(),
- _Meta = _Strbuf->sgetc()))
- _Strbuf = 0;
- else
- _Val = traits_type::to_char_type(_Meta);
- _Got = true;
- return (_Val);
- }
- streambuf_type *_Strbuf;
- bool _Got;
- _Elem _Val;
- };
-
-template<class _Elem,
- class _Traits> inline
- bool __cdecl operator==(
- const istreambuf_iterator<_Elem, _Traits>& _Left,
- const istreambuf_iterator<_Elem, _Traits>& _Right)
- {
- return (_Left.equal(_Right));
- }
-template<class _Elem,
- class _Traits> inline
- bool __cdecl operator!=(
- const istreambuf_iterator<_Elem, _Traits>& _Left,
- const istreambuf_iterator<_Elem, _Traits>& _Right)
- {
- return (!(_Left == _Right));
- }
-
-template<class _Elem,
- class _Traits>
- class ostreambuf_iterator
- : public _Outit_with_base<_Iterator_base_secure>
- {
- typedef ostreambuf_iterator<_Elem, _Traits> _Myt;
-public:
- typedef _Elem char_type;
- typedef _Traits traits_type;
- typedef basic_streambuf<_Elem, _Traits> streambuf_type;
- typedef basic_ostream<_Elem, _Traits> ostream_type;
- typedef _Range_checked_iterator_tag _Checked_iterator_category;
- ostreambuf_iterator(streambuf_type *_Sb) throw ()
- : _Failed(false), _Strbuf(_Sb)
- {
- }
- ostreambuf_iterator(ostream_type& _Ostr) throw ()
- : _Failed(false), _Strbuf(_Ostr.rdbuf())
- {
- }
- _Myt& operator=(_Elem _Right)
- {
- if (_Strbuf == 0
- || traits_type::eq_int_type(_Traits::eof(),
- _Strbuf->sputc(_Right)))
- _Failed = true;
- return (*this);
- }
- _Myt& operator*()
- {
- return (*this);
- }
- _Myt& operator++()
- {
- return (*this);
- }
- _Myt& operator++(int)
- {
- return (*this);
- }
- bool failed() const throw ()
- {
- return (_Failed);
- }
-private:
- bool _Failed;
- streambuf_type *_Strbuf;
- };
-
-template<class _InIt, class _OutIt, class _InOutItCat>
-inline
- _OutIt __cdecl _Copy_opt(_InIt _First, _InIt _Last, _OutIt _Dest,
- _InOutItCat, _Nonscalar_ptr_iterator_tag, _Range_checked_iterator_tag)
- {
- ;
- for (; _First != _Last; ++_Dest, ++_First)
- *_Dest = *_First;
- return (_Dest);
- }
-template<class _InIt, class _OutIt>
-inline
- _OutIt __cdecl _Copy_opt(_InIt _First, _InIt _Last, _OutIt _Dest,
- random_access_iterator_tag, _Nonscalar_ptr_iterator_tag, _Range_checked_iterator_tag)
- {
-
- _OutIt _Result = _Dest + (_Last - _First);
- _Copy_opt(_First, _Last, ::std:: _Checked_base(_Dest),
- forward_iterator_tag(), _Nonscalar_ptr_iterator_tag(), _Range_checked_iterator_tag());
- return _Result;
- }
-template<class _InIt, class _OutIt, class _InOutItCat>
-inline
- _OutIt __cdecl _Copy_opt(_InIt _First, _InIt _Last, _OutIt _Dest,
- _InOutItCat, _Scalar_ptr_iterator_tag, _Range_checked_iterator_tag)
- {
-
- ptrdiff_t _Off = _Last - _First;
-
- _OutIt _Result = _Dest + _Off;
- if (_Off > 0)
- ::memmove_s((&*_Dest), (_Off * sizeof (*_First)), (&*_First), (_Off * sizeof (*_First)));
- return _Result;
- }
-template<class _InIt, class _OutIt, class _InOutItCat, class _Ty>
-inline
-__declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
- _OutIt __cdecl _Copy_opt(_InIt _First, _InIt _Last, _OutIt _Dest,
- _InOutItCat _First_dest_cat, _Ty _PtrCat, _Unchecked_iterator_tag)
- {
- return _Copy_opt(_First, _Last, _Dest, _First_dest_cat, _PtrCat, _Range_checked_iterator_tag());
- }
+namespace boost {
+namespace detail {
-template<class _InIt,
- class _OutIt> inline
- _OutIt __cdecl copy(_InIt _First, _InIt _Last, _OutIt _Dest)
- {
- return (_Copy_opt(::std:: _Checked_base(_First), ::std:: _Checked_base(_Last), _Dest,
- _Iter_random(_First, _Dest), _Ptr_cat(_First, _Dest), ::std:: _Checked_cat(_Dest)));
- }
+template <typename T>
+struct has_trivial_ctor_impl
+{
+ static const bool value = (::boost::type_traits::ice_or< ::boost::is_pod<T>::value, __has_trivial_constructor(T) >::value);
+};
-
-template<class _InIt, class _OutIt, class _InOutItCat, class _MoveCatTy>
-inline
- _OutIt __cdecl _Move_opt(_InIt _First, _InIt _Last, _OutIt _Dest,
- _InOutItCat _First_dest_cat, _MoveCatTy, _Range_checked_iterator_tag)
- {
- return _Copy_opt(_First, _Last, _Dest,
- _First_dest_cat, _Ptr_cat(_First, _Dest), _Range_checked_iterator_tag());
- }
+}
-template<class _InIt, class _OutIt, class _InOutItCat>
-inline
- _OutIt __cdecl _Move_opt(_InIt _First, _InIt _Last, _OutIt _Dest,
- _InOutItCat, _Swap_move_tag, _Range_checked_iterator_tag)
- {
- ;
- for (; _First != _Last; ++_Dest, ++_First)
- ::std:: swap(*_Dest, *_First);
- return (_Dest);
- }
+template< typename T > struct has_trivial_constructor : ::boost::integral_constant<bool,::boost::detail::has_trivial_ctor_impl<T>::value> { };
+template< typename T > struct has_trivial_default_constructor : ::boost::integral_constant<bool,::boost::detail::has_trivial_ctor_impl<T>::value> { };
+}
-template<class _InIt, class _OutIt, class _InOutItCat>
-inline
- _OutIt __cdecl _Move_opt(_InIt _First, _InIt _Last, _OutIt _Dest,
- random_access_iterator_tag, _Swap_move_tag _Move_cat, _Range_checked_iterator_tag)
- {
-
- _OutIt _Result = _Dest + (_Last - _First);
- _Move_opt(_First, _Last, ::std:: _Checked_base(_Dest),
- forward_iterator_tag(), _Move_cat, _Range_checked_iterator_tag());
- return _Result;
- }
-template<class _InIt, class _OutIt, class _InOutItCat, class _MoveCatTy>
-inline
-__declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
- _OutIt __cdecl _Move_opt(_InIt _First, _InIt _Last, _OutIt _Dest,
- _InOutItCat _First_dest_cat, _MoveCatTy _Move_cat, _Unchecked_iterator_tag)
- {
- return _Move_opt(_First, _Last, _Dest, _First_dest_cat, _Move_cat, _Range_checked_iterator_tag());
- }
-template<class _InIt, class _OutIt>
-inline
- _OutIt __cdecl _Move(_InIt _First, _InIt _Last, _OutIt _Dest)
- {
- return _Move_opt(::std:: _Checked_base(_First), ::std:: _Checked_base(_Last), _Dest,
- _Iter_random(_First, _Dest), _Move_cat(_Dest), ::std:: _Checked_cat(_Dest));
- }
-
-template<class _BidIt1, class _BidIt2, class _InOutItCat>
-inline
- _BidIt2 __cdecl _Copy_backward_opt(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest,
- _InOutItCat, _Nonscalar_ptr_iterator_tag, _Range_checked_iterator_tag)
- {
- ;
- while (_First != _Last)
- *--_Dest = *--_Last;
- return (_Dest);
- }
-template<class _InIt, class _OutIt>
-inline
- _OutIt __cdecl _Copy_backward_opt(_InIt _First, _InIt _Last, _OutIt _Dest,
- random_access_iterator_tag, _Nonscalar_ptr_iterator_tag, _Range_checked_iterator_tag)
- {
-
- _OutIt _Result = _Dest - (_Last - _First);
- _Copy_backward_opt(_First, _Last, ::std:: _Checked_base(_Dest),
- forward_iterator_tag(), _Nonscalar_ptr_iterator_tag(), _Range_checked_iterator_tag());
- return _Result;
- }
-template<class _InIt, class _OutIt, class _InOutItCat>
-inline
- _OutIt __cdecl _Copy_backward_opt(_InIt _First, _InIt _Last, _OutIt _Dest,
- _InOutItCat, _Scalar_ptr_iterator_tag, _Range_checked_iterator_tag)
- {
-
- ptrdiff_t _Off = _Last - _First;
-
- _OutIt _Result = _Dest - _Off;
- if (_Off > 0)
- ::memmove_s((&*_Result), (_Off * sizeof (*_First)), (&*_First), (_Off * sizeof (*_First)));
- return _Result;
- }
-template<class _BidIt1, class _BidIt2, class _InOutItCat, class _Ty>
-inline
-__declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
- _BidIt2 __cdecl _Copy_backward_opt(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest,
- _InOutItCat _First_dest_cat, _Ty _PtrCat, _Unchecked_iterator_tag)
- {
- return _Copy_backward_opt(_First, _Last, _Dest,
- _First_dest_cat, _PtrCat, _Range_checked_iterator_tag());
- }
-template<class _BidIt1,
- class _BidIt2> inline
- _BidIt2 __cdecl copy_backward(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest)
- {
- return _Copy_backward_opt(::std:: _Checked_base(_First), ::std:: _Checked_base(_Last), _Dest,
- _Iter_random(_First, _Dest), _Ptr_cat(_First, _Dest), ::std:: _Checked_cat(_Dest));
- }
-
-template<class _BidIt1, class _BidIt2, class _InOutItCat, class _MoveCatTy>
-inline
- _BidIt2 __cdecl _Move_backward_opt(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest,
- _InOutItCat _First_dest_cat, _MoveCatTy, _Range_checked_iterator_tag)
- {
- return _Copy_backward_opt(_First, _Last, _Dest,
- _First_dest_cat, _Ptr_cat(_First, _Dest), _Range_checked_iterator_tag());
- }
-template<class _BidIt1, class _BidIt2, class _InOutItCat>
-inline
- _BidIt2 __cdecl _Move_backward_opt(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest,
- _InOutItCat, _Swap_move_tag, _Range_checked_iterator_tag)
- {
- ;
- while (_First != _Last)
- ::std:: swap(*--_Dest, *--_Last);
- return (_Dest);
- }
-template<class _BidIt1, class _BidIt2>
-inline
- _BidIt2 __cdecl _Move_backward_opt(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest,
- random_access_iterator_tag, _Swap_move_tag _Move_cat, _Range_checked_iterator_tag)
- {
-
- _BidIt2 _Result = _Dest - (_Last - _First);
- _Move_backward_opt(_First, _Last, ::std:: _Checked_base(_Dest),
- forward_iterator_tag(), _Move_cat, _Range_checked_iterator_tag());
- return _Result;
- }
-template<class _BidIt1, class _BidIt2, class _InOutItCat, class _MoveCatTy>
-inline
-__declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
- _BidIt2 __cdecl _Move_backward_opt(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest,
- _InOutItCat _First_dest_cat, _MoveCatTy _Move_cat, _Unchecked_iterator_tag)
- {
- return _Move_backward_opt(_First, _Last, _Dest,
- _First_dest_cat, _Move_cat, _Range_checked_iterator_tag());
- }
-template<class _BidIt1, class _BidIt2>
-inline
- _BidIt2 __cdecl _Move_backward(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest)
- {
- return _Move_backward_opt(::std:: _Checked_base(_First), ::std:: _Checked_base(_Last), _Dest,
- _Iter_random(_First, _Dest), _Move_cat(_Dest), ::std:: _Checked_cat(_Dest));
- }
-
-template<class _InIt1, class _InIt2, class _InItCats>
-inline
- pair<_InIt1, _InIt2>
- __cdecl _Mismatch(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2,
- _InItCats, _Range_checked_iterator_tag)
- {
-
- for (; _First1 != _Last1 && *_First1 == *_First2; )
- ++_First1, ++_First2;
- return (pair<_InIt1, _InIt2>(_First1, _First2));
- }
-template<class _InIt1, class _InIt2>
-inline
- pair<_InIt1, _InIt2>
- __cdecl _Mismatch(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2,
- random_access_iterator_tag, _Range_checked_iterator_tag)
- {
-
- _InIt2 _Last2 = _First2 + (_Last1 - _First1); (_Last2);
- pair<_InIt1, typename ::std:: _Checked_iterator_base_helper<_InIt2>::_Checked_iterator_base_type> _Result =
- _Mismatch(_First1, _Last1, ::std:: _Checked_base(_First2),
- forward_iterator_tag(), _Range_checked_iterator_tag());
- ::std:: _Checked_assign_from_base(_First2, _Result.second);
- return (pair<_InIt1, _InIt2>(_Result.first, _First2));
- }
-template<class _InIt1, class _InIt2, class _InItCats>
-inline
-__declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
- pair<_InIt1, _InIt2>
- __cdecl _Mismatch(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2,
- _InItCats _InIt_cats, _Unchecked_iterator_tag)
- {
- return _Mismatch(_First1, _Last1, _First2,
- _InIt_cats, _Range_checked_iterator_tag());
- }
-template<class _InIt1, class _InIt2>
-inline
- pair<_InIt1, _InIt2>
- __cdecl mismatch(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2)
- {
- pair<typename ::std:: _Checked_iterator_base_helper<_InIt1>::_Checked_iterator_base_type, _InIt2> _Result =
- _Mismatch(::std:: _Checked_base(_First1), ::std:: _Checked_base(_Last1), _First2,
- _Iter_random(_First1, _First2), ::std:: _Checked_cat(_First2));
- ::std:: _Checked_assign_from_base(_First1, _Result.first);
- return (pair<_InIt1, _InIt2>(_First1, _Result.second));
- }
-
-template<class _InIt1, class _InIt2, class _Pr, class _InItCats>
-inline
- pair<_InIt1, _InIt2>
- __cdecl _Mismatch(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr _Pred,
- _InItCats, _Range_checked_iterator_tag)
- {
-
- for (; _First1 != _Last1 && _Pred(*_First1, *_First2); )
- ++_First1, ++_First2;
- return (pair<_InIt1, _InIt2>(_First1, _First2));
- }
-template<class _InIt1, class _InIt2, class _Pr>
-inline
- pair<_InIt1, _InIt2>
- __cdecl _Mismatch(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr _Pred,
- random_access_iterator_tag, _Range_checked_iterator_tag)
- {
-
- _InIt2 _Last2 = _First2 + (_Last1 - _First1); (_Last2);
- pair<_InIt1, typename ::std:: _Checked_iterator_base_helper<_InIt2>::_Checked_iterator_base_type> _Result =
- _Mismatch(_First1, _Last1, ::std:: _Checked_base(_First2), _Pred,
- forward_iterator_tag(), _Range_checked_iterator_tag());
- ::std:: _Checked_assign_from_base(_First2, _Result.second);
- return (pair<_InIt1, _InIt2>(_Result.first, _First2));
- }
-template<class _InIt1, class _InIt2, class _Pr, class _InItCats>
-inline
-__declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
- pair<_InIt1, _InIt2>
- __cdecl _Mismatch(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr _Pred,
- _InItCats _InIt_cats, _Unchecked_iterator_tag)
- {
- return _Mismatch(_First1, _Last1, _First2, _Pred,
- _InIt_cats, _Range_checked_iterator_tag());
- }
-template<class _InIt1, class _InIt2, class _Pr>
-inline
- pair<_InIt1, _InIt2>
- __cdecl mismatch(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr _Pred)
- {
- pair<typename ::std:: _Checked_iterator_base_helper<_InIt1>::_Checked_iterator_base_type, _InIt2> _Result =
- _Mismatch(::std:: _Checked_base(_First1), ::std:: _Checked_base(_Last1), _First2, _Pred,
- _Iter_random(_First1, _First2), ::std:: _Checked_cat(_First2));
- ::std:: _Checked_assign_from_base(_First1, _Result.first);
- return (pair<_InIt1, _InIt2>(_First1, _Result.second));
- }
-
-template<class _InIt1, class _InIt2, class _InItCats>
-inline
- bool __cdecl _Equal(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2,
- _InItCats, _Range_checked_iterator_tag)
- {
- return (_Mismatch(_First1, _Last1, _First2,
- forward_iterator_tag(), _Range_checked_iterator_tag()).first == _Last1);
- }
-inline bool __cdecl _Equal(const char *_First1,
- const char *_Last1, const char *_First2,
- random_access_iterator_tag, _Range_checked_iterator_tag)
- {
-
- return (::memcmp(_First1, _First2, _Last1 - _First1) == 0);
- }
-inline bool __cdecl _Equal(const signed char *_First1,
- const signed char *_Last1, const signed char *_First2,
- random_access_iterator_tag, _Range_checked_iterator_tag)
- {
-
- return (::memcmp(_First1, _First2, _Last1 - _First1) == 0);
- }
-inline bool __cdecl _Equal(const unsigned char *_First1,
- const unsigned char *_Last1, const unsigned char *_First2,
- random_access_iterator_tag, _Range_checked_iterator_tag)
- {
-
- return (::memcmp(_First1, _First2, _Last1 - _First1) == 0);
- }
-template<class _InIt1, class _InIt2>
-inline
- bool __cdecl _Equal(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2,
- random_access_iterator_tag, _Range_checked_iterator_tag)
- {
-
- _InIt2 _Last2 = _First2 + (_Last1 - _First1); (_Last2);
- return _Equal(_First1, _Last1, ::std:: _Checked_base(_First2),
- forward_iterator_tag(), _Range_checked_iterator_tag());
- }
-template<class _InIt1, class _InIt2, class _InItCats>
-inline
-__declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
- bool __cdecl _Equal(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2,
- _InItCats _InIt_cats,_Unchecked_iterator_tag)
- {
- return _Equal(_First1, _Last1, _First2,
- _InIt_cats, _Range_checked_iterator_tag());
- }
-template<class _InIt1, class _InIt2>
-inline
- bool __cdecl equal(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2)
- {
- return _Equal(::std:: _Checked_base(_First1), ::std:: _Checked_base(_Last1), _First2,
- _Iter_random(_First1, _First2), ::std:: _Checked_cat(_First2));
- }
-
-template<class _InIt1, class _InIt2, class _Pr, class _InItCats>
-inline
- bool __cdecl _Equal(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr _Pred,
- _InItCats, _Range_checked_iterator_tag)
- {
- return (_Mismatch(_First1, _Last1, _First2, _Pred,
- forward_iterator_tag(), _Range_checked_iterator_tag()).first == _Last1);
- }
-template<class _InIt1, class _InIt2, class _Pr>
-inline
- bool __cdecl _Equal(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr _Pred,
- random_access_iterator_tag, _Range_checked_iterator_tag)
- {
-
- _InIt2 _Last2 = _First2 + (_Last1 - _First1); (_Last2);
- return _Equal(_First1, _Last1, ::std:: _Checked_base(_First2), _Pred,
- forward_iterator_tag(), _Range_checked_iterator_tag());
- }
-template<class _InIt1, class _InIt2, class _Pr, class _InItCats>
-inline
-__declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
- bool __cdecl _Equal(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr _Pred,
- _InItCats _InIt_cats,_Unchecked_iterator_tag)
- {
- return _Equal(_First1, _Last1, _First2, _Pred,
- _InIt_cats, _Range_checked_iterator_tag());
- }
-template<class _InIt1, class _InIt2, class _Pr>
-inline
- bool __cdecl equal(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr _Pred)
- {
- return _Equal(::std:: _Checked_base(_First1), ::std:: _Checked_base(_Last1), _First2, _Pred,
- _Iter_random(_First1, _First2), ::std:: _Checked_cat(_First2));
- }
-
-template<class _FwdIt, class _Ty> inline
- void __cdecl _Fill(_FwdIt _First, _FwdIt _Last, const _Ty& _Val)
- {
- ;
- for (; _First != _Last; ++_First)
- *_First = _Val;
- }
-inline void __cdecl _Fill( char *_First,
- char *_Last, int _Val)
- {
- ;
- ::memset(_First, _Val, _Last - _First);
- }
-inline void __cdecl _Fill( signed char *_First,
- signed char *_Last, int _Val)
- {
- ;
- ::memset(_First, _Val, _Last - _First);
- }
-inline void __cdecl _Fill(
- unsigned char *_First,
- unsigned char *_Last, int _Val)
- {
- ;
- ::memset(_First, _Val, _Last - _First);
- }
-template<class _FwdIt, class _Ty> inline
- void __cdecl fill(_FwdIt _First, _FwdIt _Last, const _Ty& _Val)
- {
- _Fill(::std:: _Checked_base(_First), ::std:: _Checked_base(_Last), _Val);
- }
-
-template<class _OutIt,
- class _Diff,
- class _Ty> inline
- void __cdecl _Fill_n(_OutIt _First, _Diff _Count, const _Ty& _Val,
- _Range_checked_iterator_tag)
- {
- for (; 0 < _Count; --_Count, ++_First)
- *_First = _Val;
- }
-inline void __cdecl _Fill_n( char *_First,
- size_t _Count, int _Val, _Range_checked_iterator_tag)
- {
-
- ::memset(_First, _Val, _Count);
- }
-inline void __cdecl _Fill_n( signed char *_First,
- size_t _Count, int _Val, _Range_checked_iterator_tag)
- {
-
- ::memset(_First, _Val, _Count);
- }
-inline void __cdecl _Fill_n( unsigned char *_First,
- size_t _Count, int _Val, _Range_checked_iterator_tag)
- {
-
- ::memset(_First, _Val, _Count);
- }
-template<class _OutIt, class _Diff, class _Ty, class _OutCat>
-inline
- void __cdecl _Fill_n(_OutIt _First, _Diff _Count, const _Ty& _Val,
- _OutCat, _Range_checked_iterator_tag)
- {
- _Fill_n(_First, _Count, _Val, _Range_checked_iterator_tag());
- }
-template<class _OutIt, class _Diff, class _Ty>
-inline
- void __cdecl _Fill_n(_OutIt _First, _Diff _Count, const _Ty& _Val,
- random_access_iterator_tag, _Range_checked_iterator_tag)
- {
-
- _OutIt _Last = _First + _Count; (_Last);
- _Fill_n(::std:: _Checked_base(_First), _Count, _Val,
- _Range_checked_iterator_tag());
- }
-template<class _OutIt, class _Diff, class _Ty, class _OutCat>
-inline
-__declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
- void __cdecl _Fill_n(_OutIt _First, _Diff _Count, const _Ty& _Val,
- _OutCat _First_cat, _Unchecked_iterator_tag)
- {
- _Fill_n(_First, _Count, _Val, _First_cat, _Range_checked_iterator_tag());
- }
-template<class _OutIt,
- class _Diff,
- class _Ty> inline
- void __cdecl fill_n(_OutIt _First, _Diff _Count, const _Ty& _Val)
- {
- _Fill_n(_First, _Count, _Val, _Iter_cat(_First), ::std:: _Checked_cat(_First));
- }
-
-template<class _InIt1, class _InIt2> inline
- bool __cdecl _Lexicographical_compare(_InIt1 _First1, _InIt1 _Last1,
- _InIt2 _First2, _InIt2 _Last2)
- {
- ;
- ;
- for (; _First1 != _Last1 && _First2 != _Last2; ++_First1, ++_First2)
- if (((*_First1) < (*_First2)))
- return (true);
- else if (*_First2 < *_First1)
- return (false);
- return (_First1 == _Last1 && _First2 != _Last2);
- }
-template<class _InIt1, class _InIt2> inline
- bool __cdecl lexicographical_compare(_InIt1 _First1, _InIt1 _Last1,
- _InIt2 _First2, _InIt2 _Last2)
- {
- return _Lexicographical_compare(::std:: _Checked_base(_First1), ::std:: _Checked_base(_Last1),
- ::std:: _Checked_base(_First2), ::std:: _Checked_base(_Last2));
- }
-inline bool __cdecl lexicographical_compare(
- const unsigned char *_First1, const unsigned char *_Last1,
- const unsigned char *_First2, const unsigned char *_Last2)
- {
- ;
- ;
- ptrdiff_t _Num1 = _Last1 - _First1;
- ptrdiff_t _Num2 = _Last2 - _First2;
- int _Ans = ::memcmp(_First1, _First2, _Num1 < _Num2 ? _Num1 : _Num2);
- return (_Ans < 0 || _Ans == 0 && _Num1 < _Num2);
- }
-
@@ -122076,275 +119375,63 @@
-
-template<class _InIt1,
- class _InIt2,
- class _Pr> inline
- bool __cdecl _Lexicographical_compare(_InIt1 _First1, _InIt1 _Last1,
- _InIt2 _First2, _InIt2 _Last2, _Pr _Pred)
- {
- ;
- ;
- ;
- for (; _First1 != _Last1 && _First2 != _Last2; ++_First1, ++_First2)
- if (_Pred(*_First1, *_First2))
- return (true);
- else if (_Pred(*_First2, *_First1))
- return (false);
- return (_First1 == _Last1 && _First2 != _Last2);
- }
-template<class _InIt1, class _InIt2, class _Pr> inline
- bool __cdecl lexicographical_compare(_InIt1 _First1, _InIt1 _Last1,
- _InIt2 _First2, _InIt2 _Last2, _Pr _Pred)
- {
- return _Lexicographical_compare(::std:: _Checked_base(_First1), ::std:: _Checked_base(_Last1),
- ::std:: _Checked_base(_First2), ::std:: _Checked_base(_Last2), _Pred);
- }
-
-
-
-
-
-
-
-
-
-
-
-template<class _Ty> inline
- const _Ty& (__cdecl max)(const _Ty& _Left, const _Ty& _Right)
- {
- return (((_Left) < (_Right)) ? _Right : _Left);
- }
-
-template<class _Ty,
- class _Pr> inline
- const _Ty& (__cdecl max)(const _Ty& _Left, const _Ty& _Right, _Pr _Pred)
- {
- return (_Pred(_Left, _Right) ? _Right : _Left);
- }
-
-template<class _Ty> inline
- const _Ty& (__cdecl min)(const _Ty& _Left, const _Ty& _Right)
- {
- return (((_Right) < (_Left)) ? _Right : _Left);
- }
-
-template<class _Ty,
- class _Pr> inline
- const _Ty& (__cdecl min)(const _Ty& _Left, const _Ty& _Right, _Pr _Pred)
- {
- return (_Pred(_Right, _Left) ? _Right : _Left);
- }
-
-
-}
-namespace stdext {
-template<class _InIt,
- class _OutIt> inline
- _OutIt __cdecl unchecked_copy(_InIt _First, _InIt _Last, _OutIt _Dest)
- {
- return (::std:: _Copy_opt(::std:: _Checked_base(_First), ::std:: _Checked_base(_Last), _Dest,
- ::std:: _Iter_random(_First, _Dest), ::std:: _Ptr_cat(_First, _Dest), ::std:: _Range_checked_iterator_tag()));
- }
-template<class _InIt,
- class _OutIt> inline
- _OutIt __cdecl checked_copy(_InIt _First, _InIt _Last, _OutIt _Dest)
- {
- return (::std:: _Copy_opt(::std:: _Checked_base(_First), ::std:: _Checked_base(_Last), _Dest,
- ::std:: _Iter_random(_First, _Dest), ::std:: _Ptr_cat(_First, _Dest), ::std:: _Checked_cat(_Dest)));
- }
-template<class _BidIt1,
- class _BidIt2> inline
- _BidIt2 __cdecl unchecked_copy_backward(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest)
- {
- return (::std:: _Copy_backward_opt(::std:: _Checked_base(_First), ::std:: _Checked_base(_Last), _Dest,
- ::std:: _Iter_random(_First, _Dest), ::std:: _Ptr_cat(_First, _Dest), ::std:: _Range_checked_iterator_tag()));
- }
-template<class _BidIt1,
- class _BidIt2> inline
- _BidIt2 __cdecl checked_copy_backward(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest)
- {
- return (::std:: _Copy_backward_opt(::std:: _Checked_base(_First), ::std:: _Checked_base(_Last), _Dest,
- ::std:: _Iter_random(_First, _Dest), ::std:: _Ptr_cat(_First, _Dest), ::std:: _Checked_cat(_Dest)));
- }
-template<class _InIt,
- class _OutIt> inline
- _OutIt __cdecl _Unchecked_move(_InIt _First, _InIt _Last, _OutIt _Dest)
- {
- return (::std:: _Move_opt(::std:: _Checked_base(_First), ::std:: _Checked_base(_Last), _Dest,
- ::std:: _Iter_random(_First, _Dest), ::std:: _Move_cat(_Dest), ::std:: _Range_checked_iterator_tag()));
- }
-template<class _InIt,
- class _OutIt> inline
- _OutIt __cdecl _Checked_move(_InIt _First, _InIt _Last, _OutIt _Dest)
- {
- return (::std:: _Move_opt(::std:: _Checked_base(_First), ::std:: _Checked_base(_Last), _Dest,
- ::std:: _Iter_random(_First, _Dest), ::std:: _Move_cat(_Dest), ::std:: _Checked_cat(_Dest)));
- }
-template<class _BidIt1,
- class _BidIt2> inline
- _BidIt2 __cdecl _Unchecked_move_backward(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest)
- {
- return (::std:: _Move_backward_opt(::std:: _Checked_base(_First), ::std:: _Checked_base(_Last), _Dest,
- ::std:: _Iter_random(_First, _Dest), ::std:: _Move_cat(_Dest), ::std:: _Range_checked_iterator_tag()));
- }
-template<class _BidIt1,
- class _BidIt2> inline
- _BidIt2 __cdecl _Checked_move_backward(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest)
- {
- return (::std:: _Move_backward_opt(::std:: _Checked_base(_First), ::std:: _Checked_base(_Last), _Dest,
- ::std:: _Iter_random(_First, _Dest), ::std:: _Move_cat(_Dest), ::std:: _Checked_cat(_Dest)));
- }
-template<class _OutIt,
- class _Diff,
- class _Ty> inline
- void __cdecl unchecked_fill_n(_OutIt _First, _Diff _Count, const _Ty& _Val)
- {
- ::std:: _Fill_n(_First, _Count, _Val, ::std:: _Iter_cat(_First), ::std:: _Range_checked_iterator_tag());
- }
-template<class _OutIt,
- class _Diff,
- class _Ty> inline
- void __cdecl checked_fill_n(_OutIt _First, _Diff _Count, const _Ty& _Val)
- {
- ::std:: _Fill_n(_First, _Count, _Val, ::std:: _Iter_cat(_First), ::std:: _Checked_cat(_Dest));
- }
-template<class _InIt1, class _InIt2>
-inline
- ::std:: pair<_InIt1, _InIt2>
- __cdecl unchecked_mismatch(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2)
- {
- ::std:: pair<typename ::std:: _Checked_iterator_base_helper<_InIt1>::_Checked_iterator_base_type, _InIt2> _Result =
- ::std:: _Mismatch(::std:: _Checked_base(_First1), ::std:: _Checked_base(_Last1), _First2,
- ::std:: _Iter_random(_First1, _First2), ::std:: _Range_checked_iterator_tag());
- ::std:: _Checked_assign_from_base(_First1, _Result.first);
- return (::std:: pair<_InIt1, _InIt2>(_First1, _Result.second));
- }
-template<class _InIt1, class _InIt2>
-inline
- ::std:: pair<_InIt1, _InIt2>
- __cdecl checked_mismatch(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2)
- {
- ::std:: pair<typename ::std:: _Checked_iterator_base_helper<_InIt1>::_Checked_iterator_base_type, _InIt2> _Result =
- ::std:: _Mismatch(::std:: _Checked_base(_First1), ::std:: _Checked_base(_Last1), _First2,
- ::std:: _Iter_random(_First1, _First2), ::std:: _Checked_cat(_First2));
- ::std:: _Checked_assign_from_base(_First1, _Result.first);
- return (::std:: pair<_InIt1, _InIt2>(_First1, _Result.second));
- }
-template<class _InIt1, class _InIt2, class _Pr>
-inline
- ::std:: pair<_InIt1, _InIt2>
- __cdecl unchecked_mismatch(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr _Pred)
- {
- ::std:: pair<typename ::std:: _Checked_iterator_base_helper<_InIt1>::_Checked_iterator_base_type, _InIt2> _Result =
- ::std:: _Mismatch(::std:: _Checked_base(_First1), ::std:: _Checked_base(_Last1), _First2, _Pred,
- ::std:: _Iter_random(_First1, _First2), ::std:: _Range_checked_iterator_tag());
- ::std:: _Checked_assign_from_base(_First1, _Result.first);
- return (::std:: pair<_InIt1, _InIt2>(_First1, _Result.second));
- }
-template<class _InIt1, class _InIt2, class _Pr>
-inline
- ::std:: pair<_InIt1, _InIt2>
- __cdecl checked_mismatch(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr _Pred)
- {
- ::std:: pair<typename ::std:: _Checked_iterator_base_helper<_InIt1>::_Checked_iterator_base_type, _InIt2> _Result =
- ::std:: _Mismatch(::std:: _Checked_base(_First1), ::std:: _Checked_base(_Last1), _First2, _Pred,
- ::std:: _Iter_random(_First1, _First2), ::std:: _Checked_cat(_First2));
- ::std:: _Checked_assign_from_base(_First1, _Result.first);
- return (::std:: pair<_InIt1, _InIt2>(_First1, _Result.second));
- }
-template<class _InIt1, class _InIt2>
-inline
- bool __cdecl unchecked_equal(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2)
- {
- return ::std:: _Equal(::std:: _Checked_base(_First1), ::std:: _Checked_base(_Last1), _First2,
- ::std:: _Iter_random(_First1, _First2), ::std:: _Range_checked_iterator_tag());
- }
-template<class _InIt1, class _InIt2>
-inline
- bool __cdecl checked_equal(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2)
- {
- return ::std:: _Equal(::std:: _Checked_base(_First1), ::std:: _Checked_base(_Last1), _First2,
- ::std:: _Iter_random(_First1, _First2), ::std:: _Checked_cat(_First2));
- }
-template<class _InIt1, class _InIt2, class _Pr>
-inline
- bool __cdecl unchecked_equal(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr _Pred)
- {
- return ::std:: _Equal(::std:: _Checked_base(_First1), ::std:: _Checked_base(_Last1), _First2, _Pred,
- ::std:: _Iter_random(_First1, _First2), ::std:: _Range_checked_iterator_tag());
- }
-template<class _InIt1, class _InIt2, class _Pr>
-inline
- bool __cdecl checked_equal(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr _Pred)
- {
- return ::std:: _Equal(::std:: _Checked_base(_First1), ::std:: _Checked_base(_Last1), _First2, _Pred,
- ::std:: _Iter_random(_First1, _First2), ::std:: _Checked_cat(_First2));
- }
-}
-
-
-
-
-
@@ -122352,7 +119439,6 @@
-
@@ -122361,12 +119447,10 @@
-
-
@@ -122388,15 +119472,11 @@
-extern "C"
- void __cdecl _invalid_parameter_noinfo(void);
-#pragma warning(pop)
-#pragma pack(pop)
@@ -122427,245 +119507,54 @@
-#pragma pack(push,8)
-#pragma warning(push,3)
- #pragma warning(disable: 4100)
-
-
-
-
-
-
-
-namespace std {
-
-template<class _Ty> inline
- _Ty *_Allocate(size_t _Count, _Ty *)
- {
- if (_Count <= 0)
- _Count = 0;
- else if (((size_t)(-1) / _Count) < sizeof (_Ty))
- throw std::bad_alloc(0);
-
- return ((_Ty *)::operator new(_Count * sizeof (_Ty)));
- }
-
-template<class _T1,
- class _T2> inline
- void _Construct(_T1 *_Ptr, const _T2& _Val)
- {
- void *_Vptr = _Ptr;
- ::new (_Vptr) _T1(_Val);
- }
-
-template<class _Ty> inline
- void _Destroy(_Ty *_Ptr)
- {
- (_Ptr)->~_Ty();
- }
-template<> inline
- void _Destroy(char *)
- {
- }
-template<> inline
- void _Destroy(wchar_t *)
- {
- }
-
-template<class _Ty>
- struct _Allocator_base
- {
- typedef _Ty value_type;
- };
-
-template<class _Ty>
- struct _Allocator_base<const _Ty>
- {
- typedef _Ty value_type;
- };
-
-template<class _Ty>
- class allocator
- : public _Allocator_base<_Ty>
- {
-public:
- typedef _Allocator_base<_Ty> _Mybase;
- typedef typename _Mybase::value_type value_type;
- typedef value_type *pointer;
- typedef value_type & reference;
- typedef const value_type *const_pointer;
- typedef const value_type & const_reference;
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- template<class _Other>
- struct rebind
- {
- typedef allocator<_Other> other;
- };
- pointer address(reference _Val) const
- {
- return (&_Val);
- }
- const_pointer address(const_reference _Val) const
- {
- return (&_Val);
- }
- allocator() throw ()
- {
- }
- allocator(const allocator<_Ty>&) throw ()
- {
- }
- template<class _Other>
- allocator(const allocator<_Other>&) throw ()
- {
- }
- template<class _Other>
- allocator<_Ty>& operator=(const allocator<_Other>&)
- {
- return (*this);
- }
- void deallocate(pointer _Ptr, size_type)
- {
- ::operator delete(_Ptr);
- }
- pointer allocate(size_type _Count)
- {
- return (_Allocate(_Count, (pointer)0));
- }
- pointer allocate(size_type _Count, const void *)
- {
- return (allocate(_Count));
- }
- void construct(pointer _Ptr, const _Ty& _Val)
- {
- _Construct(_Ptr, _Val);
- }
- void destroy(pointer _Ptr)
- {
- _Destroy(_Ptr);
- }
- size_t max_size() const throw ()
- {
- size_t _Count = (size_t)(-1) / sizeof (_Ty);
- return (0 < _Count ? _Count : 1);
- }
- };
-
-template<class _Ty,
- class _Other> inline
- bool operator==(const allocator<_Ty>&, const allocator<_Other>&) throw ()
- {
- return (true);
- }
-template<class _Ty,
- class _Other> inline
- bool operator!=(const allocator<_Ty>&, const allocator<_Other>&) throw ()
- {
- return (false);
- }
-
-template<> class allocator<void>
- {
-public:
- typedef void _Ty;
- typedef _Ty *pointer;
- typedef const _Ty *const_pointer;
- typedef _Ty value_type;
- template<class _Other>
- struct rebind
- {
- typedef allocator<_Other> other;
- };
- allocator() throw ()
- {
- }
- allocator(const allocator<_Ty>&) throw ()
- {
- }
- template<class _Other>
- allocator(const allocator<_Other>&) throw ()
- {
- }
- template<class _Other>
- allocator<_Ty>& operator=(const allocator<_Other>&)
- {
- return (*this);
- }
- };
-
-template<class _Ty,
- class _Alloc> inline
- void _Destroy_range(_Ty *_First, _Ty *_Last, _Alloc& _Al)
- {
- _Destroy_range(_First, _Last, _Al, _Ptr_cat(_First, _Last));
- }
-template<class _Ty,
- class _Alloc> inline
- void _Destroy_range(_Ty *_First, _Ty *_Last, _Alloc& _Al,
- _Nonscalar_ptr_iterator_tag)
- {
- for (; _First != _Last; ++_First)
- _Al.destroy(_First);
- }
-template<class _Ty,
- class _Alloc> inline
- void _Destroy_range(_Ty *_First, _Ty *_Last, _Alloc& _Al,
- _Scalar_ptr_iterator_tag)
- {
- }
-}
- #pragma warning(default: 4100)
-#pragma warning(pop)
-#pragma pack(pop)
@@ -122695,65 +119584,23 @@
-#pragma pack(push,8)
-#pragma warning(push,3)
-#pragma warning(disable:4412)
-
-
-namespace std {
- #pragma warning(disable:4251)
-template<class _Elem,
- class _Traits = char_traits<_Elem>,
- class _Ax = allocator<_Elem> >
- class basic_string;
-
-template<class _Elem,
- class _Traits,
- class _Alloc>
- class _String_const_iterator
- : public _Ranit_base<_Elem, typename _Alloc::difference_type,
- typename _Alloc::const_pointer, typename _Alloc::const_reference, _Iterator_base_secure>
- {
-public:
- typedef _String_const_iterator<_Elem, _Traits, _Alloc> _Myt;
- typedef basic_string<_Elem, _Traits, _Alloc> _Mystring;
- typedef random_access_iterator_tag iterator_category;
- typedef _Elem value_type;
- typedef typename _Alloc::difference_type difference_type;
- typedef typename _Alloc::const_pointer pointer;
- typedef typename _Alloc::const_reference reference;
- typedef _Range_checked_iterator_tag _Checked_iterator_category;
- typedef pointer _Checked_iterator_base_type;
- _Checked_iterator_base_type _Checked_iterator_base() const
- {
- return _Myptr;
- }
- void _Checked_iterator_assign_from_base(_Checked_iterator_base_type _Base)
- {
- this->_Myptr = _Base;
- }
- _String_const_iterator()
- {
- _Myptr = 0;
- }
-
@@ -122767,15 +119614,7 @@
-
- _String_const_iterator(pointer _Ptr, const _Container_base *_Pstring)
- {
- { if (!(_Pstring != 0 && _Ptr != 0 && ((_Mystring *)_Pstring)->_Myptr() <= _Ptr && _Ptr <= (((_Mystring *)_Pstring)->_Myptr() + ((_Mystring *)_Pstring)->_Mysize))) { ((void)0); ::_invalid_parameter_noinfo(); } ; };
- this->_Mycont = _Pstring;
- _Myptr = _Ptr;
- }
-
@@ -122785,10 +119624,7 @@
- reference operator*() const
- {
-
@@ -122798,156 +119634,37 @@
- if (this->_Mycont != ((const _Container_base *)-2))
- {
- { if (!(this->_Mycont != 0)) { ((void)0); ::_invalid_parameter_noinfo(); } ; };
- { if (!(_Myptr < (((_Mystring *)this->_Mycont)->_Myptr() + ((_Mystring *)(this->_Mycont))->_Mysize))) { ((void)0); ::_invalid_parameter_noinfo(); } ; };
- }
-
- return (*_Myptr);
- }
- pointer operator->() const
- {
- return (&**this);
- }
- _Myt& operator++()
- {
- if (this->_Mycont != ((const _Container_base *)-2))
- {
- { if (!(this->_Mycont != 0)) { ((void)0); ::_invalid_parameter_noinfo(); } ; };
- { if (!(_Myptr < (((_Mystring *)this->_Mycont)->_Myptr() + ((_Mystring *)this->_Mycont)->_Mysize))) { ((void)0); ::_invalid_parameter_noinfo(); } ; };
- }
- ++_Myptr;
- return (*this);
- }
- _Myt operator++(int)
- {
- _Myt _Tmp = *this;
- ++*this;
- return (_Tmp);
- }
- _Myt& operator--()
- {
- if (this->_Mycont != ((const _Container_base *)-2))
- {
- { if (!(this->_Mycont != 0)) { ((void)0); ::_invalid_parameter_noinfo(); } ; };
- { if (!(_Myptr > ((_Mystring *)this->_Mycont)->_Myptr())) { ((void)0); ::_invalid_parameter_noinfo(); } ; };
- }
- --_Myptr;
- return (*this);
- }
- _Myt operator--(int)
- {
- _Myt _Tmp = *this;
- --*this;
- return (_Tmp);
- }
- _Myt& operator+=(difference_type _Off)
- {
- if (this->_Mycont != ((const _Container_base *)-2))
- {
- { if (!(this->_Mycont != 0)) { ((void)0); ::_invalid_parameter_noinfo(); } ; };
- { if (!(_Myptr + _Off <= (((_Mystring *)this->_Mycont)->_Myptr() + ((_Mystring *)this->_Mycont)->_Mysize) && _Myptr + _Off >= ((_Mystring *)this->_Mycont)->_Myptr())) { ((void)0); ::_invalid_parameter_noinfo(); } ; };
- }
- _Myptr += _Off;
- return (*this);
- }
- _Myt operator+(difference_type _Off) const
- {
- _Myt _Tmp = *this;
- return (_Tmp += _Off);
- }
- _Myt& operator-=(difference_type _Off)
- {
- return (*this += -_Off);
- }
- _Myt operator-(difference_type _Off) const
- {
- _Myt _Tmp = *this;
- return (_Tmp -= _Off);
- }
- difference_type operator-(const _Myt& _Right) const
- {
-
- if (this->_Mycont != ((const _Container_base *)-2))
- {
- { if (!(this->_Mycont != 0 && this->_Mycont == _Right._Mycont)) { ((void)0); ::_invalid_parameter_noinfo(); } ; };
- }
-
- return (_Myptr - _Right._Myptr);
- }
- reference operator[](difference_type _Off) const
- {
- return (*(*this + _Off));
- }
- bool operator==(const _Myt& _Right) const
- {
-
- if (this->_Mycont != ((const _Container_base *)-2))
- {
- { if (!(this->_Mycont != 0 && this->_Mycont == _Right._Mycont)) { ((void)0); ::_invalid_parameter_noinfo(); } ; };
- }
-
- return (_Myptr == _Right._Myptr);
- }
- bool operator!=(const _Myt& _Right) const
- {
- return (!(*this == _Right));
- }
- bool operator<(const _Myt& _Right) const
- {
-
- if (this->_Mycont != ((const _Container_base *)-2))
- {
- { if (!(this->_Mycont != 0 && this->_Mycont == _Right._Mycont)) { ((void)0); ::_invalid_parameter_noinfo(); } ; };
- }
-
- return (_Myptr < _Right._Myptr);
- }
- bool operator>(const _Myt& _Right) const
- {
- return (_Right < *this);
- }
- bool operator<=(const _Myt& _Right) const
- {
- return (!(_Right < *this));
- }
- bool operator>=(const _Myt& _Right) const
- {
- return (!(*this < _Right));
- }
-
@@ -122958,57 +119675,14 @@
- static void __cdecl _Xlen()
- {
- _Mystring::_Xlen();
- }
- static void __cdecl _Xran()
- {
- _Mystring::_Xran();
- }
- static void __cdecl _Xinvarg()
- {
- _Mystring::_Xinvarg();
- }
- pointer _Myptr;
- };
-template<class _Elem,
- class _Traits,
- class _Alloc> inline
- _String_const_iterator<_Elem, _Traits, _Alloc> __cdecl operator+(
- typename _String_const_iterator<_Elem, _Traits, _Alloc>
- ::difference_type _Off,
- _String_const_iterator<_Elem, _Traits, _Alloc> _Next)
- {
- return (_Next += _Off);
- }
-
-template<class _Elem,
- class _Traits,
- class _Alloc>
- class _String_iterator
- : public _String_const_iterator<_Elem, _Traits, _Alloc>
- {
-public:
- typedef _String_iterator<_Elem, _Traits, _Alloc> _Myt;
- typedef _String_const_iterator<_Elem, _Traits, _Alloc> _Mybase;
- typedef random_access_iterator_tag iterator_category;
- typedef _Elem value_type;
- typedef typename _Alloc::difference_type difference_type;
- typedef typename _Alloc::pointer pointer;
- typedef typename _Alloc::reference reference;
- _String_iterator()
- {
- }
-
@@ -123017,13 +119691,7 @@
-
- _String_iterator(pointer _Ptr, const _Container_base *_Pstring)
- : _Mybase(_Ptr, _Pstring)
- {
- }
-
@@ -123033,165 +119701,35 @@
- typedef pointer _Checked_iterator_base_type;
- _Checked_iterator_base_type _Checked_iterator_base() const
- {
- return const_cast<pointer>(this->_Myptr);
- }
- void _Checked_iterator_assign_from_base(_Checked_iterator_base_type _Base)
- {
- this->_Myptr = _Base;
- }
- reference operator*() const
- {
- return ((reference)**(_Mybase *)this);
- }
- pointer operator->() const
- {
- return (&**this);
- }
- _Myt& operator++()
- {
- ++(*(_Mybase *)this);
- return (*this);
- }
- _Myt operator++(int)
- {
- _Myt _Tmp = *this;
- ++*this;
- return (_Tmp);
- }
- _Myt& operator--()
- {
- --(*(_Mybase *)this);
- return (*this);
- }
- _Myt operator--(int)
- {
- _Myt _Tmp = *this;
- --*this;
- return (_Tmp);
- }
- _Myt& operator+=(difference_type _Off)
- {
- (*(_Mybase *)this) += _Off;
- return (*this);
- }
- _Myt operator+(difference_type _Off) const
- {
- _Myt _Tmp = *this;
- return (_Tmp += _Off);
- }
- _Myt& operator-=(difference_type _Off)
- {
- return (*this += -_Off);
- }
- _Myt operator-(difference_type _Off) const
- {
- _Myt _Tmp = *this;
- return (_Tmp -= _Off);
- }
- difference_type operator-(const _Mybase& _Right) const
- {
- return ((_Mybase)*this - _Right);
- }
- reference operator[](difference_type _Off) const
- {
- return (*(*this + _Off));
- }
- };
-template<class _Elem,
- class _Traits,
- class _Alloc> inline
- _String_iterator<_Elem, _Traits, _Alloc> operator+(
- typename _String_iterator<_Elem, _Traits, _Alloc>
- ::difference_type _Off,
- _String_iterator<_Elem, _Traits, _Alloc> _Next)
- {
- return (_Next += _Off);
- }
-
-class _String_base
- : public _Container_base
- {
-public:
- static void __cdecl _Xlen();
- static void __cdecl _Xran();
- static void __cdecl _Xinvarg();
- };
-
-template<class _Ty,
- class _Alloc>
- class _String_val
- : public _String_base
- {
-protected:
- typedef typename _Alloc::template
- rebind<_Ty>::other _Alty;
- _String_val(_Alty _Al = _Alty())
- : _Alval(_Al)
- {
- }
- _Alty _Alval;
- };
-
-template<class _Elem,
- class _Traits,
- class _Ax>
- class basic_string
- : public _String_val<_Elem, _Ax>
- {
-public:
- typedef basic_string<_Elem, _Traits, _Ax> _Myt;
- typedef _String_val<_Elem, _Ax> _Mybase;
- typedef typename _Mybase::_Alty _Alloc;
- typedef typename _Alloc::size_type size_type;
- typedef typename _Alloc::difference_type _Dift;
- typedef _Dift difference_type;
- typedef typename _Alloc::pointer _Tptr;
- typedef typename _Alloc::const_pointer _Ctptr;
- typedef _Tptr pointer;
- typedef _Ctptr const_pointer;
- typedef typename _Alloc::reference _Reft;
- typedef _Reft reference;
- typedef typename _Alloc::const_reference const_reference;
- typedef typename _Alloc::value_type value_type;
-
- typedef _String_iterator<_Elem, _Traits, _Alloc> iterator;
- typedef _String_const_iterator<_Elem, _Traits, _Alloc> const_iterator;
- friend class _String_const_iterator<_Elem, _Traits, _Alloc>;
- typedef std::reverse_iterator<iterator> reverse_iterator;
- typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
-
@@ -123227,15 +119765,8 @@
-
- basic_string()
- : _Mybase()
- {
- _Tidy();
- }
-
@@ -123265,98 +119796,20 @@
-
- explicit basic_string(const _Alloc& _Al)
- : _Mybase(_Al)
- {
- _Tidy();
- }
- basic_string(const _Myt& _Right)
- : _Mybase(_Right._Alval)
- {
- _Tidy();
- assign(_Right, 0, npos);
- }
- basic_string(const _Myt& _Right, size_type _Roff,
- size_type _Count = npos)
- : _Mybase()
- {
- _Tidy();
- assign(_Right, _Roff, _Count);
- }
- basic_string(const _Myt& _Right, size_type _Roff, size_type _Count,
- const _Alloc& _Al)
- : _Mybase(_Al)
- {
- _Tidy();
- assign(_Right, _Roff, _Count);
- }
- basic_string(const _Elem *_Ptr, size_type _Count)
- : _Mybase()
- {
- _Tidy();
- assign(_Ptr, _Count);
- }
- basic_string(const _Elem *_Ptr, size_type _Count, const _Alloc& _Al)
- : _Mybase(_Al)
- {
- _Tidy();
- assign(_Ptr, _Count);
- }
- basic_string(const _Elem *_Ptr)
- : _Mybase()
- {
- _Tidy();
- assign(_Ptr);
- }
- basic_string(const _Elem *_Ptr, const _Alloc& _Al)
- : _Mybase(_Al)
- {
- _Tidy();
- assign(_Ptr);
- }
- basic_string(size_type _Count, _Elem _Ch)
- : _Mybase()
- {
- _Tidy();
- assign(_Count, _Ch);
- }
- basic_string(size_type _Count, _Elem _Ch, const _Alloc& _Al)
- : _Mybase(_Al)
- {
- _Tidy();
- assign(_Count, _Ch);
- }
- template<class _It>
- basic_string(_It _First, _It _Last)
- : _Mybase()
- {
- _Tidy();
- _Construct(_First, _Last, _Iter_cat(_First));
- }
- template<class _It>
- basic_string(_It _First, _It _Last, const _Alloc& _Al)
- : _Mybase(_Al)
- {
- _Tidy();
- _Construct(_First, _Last, _Iter_cat(_First));
- }
-
-
@@ -123472,30 +119925,8 @@
- template<class _It>
- void _Construct(_It _Count,
- _It _Ch, _Int_iterator_tag)
- {
- assign((size_type)_Count, (_Elem)_Ch);
- }
- template<class _It>
- void _Construct(_It _First,
- _It _Last, input_iterator_tag)
- {
- try {
- for (; _First != _Last; ++_First)
- append((size_type)1, (_Elem)*_First);
- } catch (...) {
- _Tidy(true);
- throw;
- }
- }
- template<class _It>
- void _Construct(_It _First,
- _It _Last, forward_iterator_tag)
- {
@@ -123503,22 +119934,8 @@
- size_type _Count = 0;
- _Distance(_First, _Last, _Count);
- reserve(_Count);
- try {
- for (; _First != _Last; ++_First)
- append((size_type)1, (_Elem)*_First);
- } catch (...) {
- _Tidy(true);
- throw;
- }
- }
- basic_string(const_pointer _First, const_pointer _Last)
- : _Mybase()
- {
@@ -123526,14 +119943,7 @@
- _Tidy();
- if (_First != _Last)
- assign(&*_First, _Last - _First);
- }
- basic_string(const_iterator _First, const_iterator _Last)
- : _Mybase()
- {
@@ -123541,639 +119951,101 @@
- _Tidy();
- if (_First != _Last)
- assign(&*_First, _Last - _First);
- }
- ~basic_string()
- {
- _Tidy(true);
- }
- typedef _Traits traits_type;
- typedef _Alloc allocator_type;
- static const size_type npos;
- _Myt& operator=(const _Myt& _Right)
- {
- return (assign(_Right));
- }
- _Myt& operator=(const _Elem *_Ptr)
- {
- return (assign(_Ptr));
- }
- _Myt& operator=(_Elem _Ch)
- {
- return (assign(1, _Ch));
- }
- _Myt& operator+=(const _Myt& _Right)
- {
- return (append(_Right));
- }
- _Myt& operator+=(const _Elem *_Ptr)
- {
- return (append(_Ptr));
- }
- _Myt& operator+=(_Elem _Ch)
- {
- return (append((size_type)1, _Ch));
- }
- _Myt& append(const _Myt& _Right)
- {
- return (append(_Right, 0, npos));
- }
- _Myt& append(const _Myt& _Right,
- size_type _Roff, size_type _Count)
- {
- if (_Right.size() < _Roff)
- _String_base::_Xran();
- size_type _Num = _Right.size() - _Roff;
- if (_Num < _Count)
- _Count = _Num;
- if (npos - _Mysize <= _Count || _Mysize + _Count < _Mysize)
- _String_base::_Xlen();
- if (0 < _Count && _Grow(_Num = _Mysize + _Count))
- {
- _Traits_helper::copy_s<_Traits>(_Myptr() + _Mysize, _Myres - _Mysize,
- _Right._Myptr() + _Roff, _Count);
- _Eos(_Num);
- }
- return (*this);
- }
- _Myt& append(const _Elem *_Ptr, size_type _Count)
- {
- if (_Inside(_Ptr))
- return (append(*this, _Ptr - _Myptr(), _Count));
- if (npos - _Mysize <= _Count || _Mysize + _Count < _Mysize)
- _String_base::_Xlen();
- size_type _Num;
- if (0 < _Count && _Grow(_Num = _Mysize + _Count))
- {
- _Traits_helper::copy_s<_Traits>(_Myptr() + _Mysize, _Myres - _Mysize, _Ptr, _Count);
- _Eos(_Num);
- }
- return (*this);
- }
- _Myt& append(const _Elem *_Ptr)
- {
- return (append(_Ptr, _Traits::length(_Ptr)));
- }
- _Myt& append(size_type _Count, _Elem _Ch)
- {
- if (npos - _Mysize <= _Count)
- _String_base::_Xlen();
- size_type _Num;
- if (0 < _Count && _Grow(_Num = _Mysize + _Count))
- {
- _Chassign(_Mysize, _Count, _Ch);
- _Eos(_Num);
- }
- return (*this);
- }
- template<class _It>
- _Myt& append(_It _First, _It _Last)
- {
- return (_Append(_First, _Last, _Iter_cat(_First)));
- }
- template<class _It>
- _Myt& _Append(_It _Count, _It _Ch, _Int_iterator_tag)
- {
- return (append((size_type)_Count, (_Elem)_Ch));
- }
- template<class _It>
- _Myt& _Append(_It _First, _It _Last, input_iterator_tag)
- {
- return (replace(end(), end(), _First, _Last));
- }
- _Myt& append(const_pointer _First, const_pointer _Last)
- {
- return (replace(end(), end(), _First, _Last));
- }
- _Myt& append(const_iterator _First, const_iterator _Last)
- {
- return (replace(end(), end(), _First, _Last));
- }
- _Myt& assign(const _Myt& _Right)
- {
- return (assign(_Right, 0, npos));
- }
+namespace boost {
- _Myt& assign(const _Myt& _Right,
- size_type _Roff, size_type _Count)
- {
- if (_Right.size() < _Roff)
- _String_base::_Xran();
- size_type _Num = _Right.size() - _Roff;
- if (_Count < _Num)
- _Num = _Count;
+namespace detail{
- if (this == &_Right)
- erase((size_type)(_Roff + _Num)), erase(0, _Roff);
- else if (_Grow(_Num))
- {
- _Traits_helper::copy_s<_Traits>(_Myptr(), _Myres, _Right._Myptr() + _Roff, _Num);
- _Eos(_Num);
- }
- return (*this);
- }
+template <class T>
+struct has_nothrow_constructor_imp{
+ static const bool value = (::boost::type_traits::ice_or< ::boost::has_trivial_constructor<T>::value, __has_nothrow_constructor(T) >::value);
+};
- _Myt& assign(const _Elem *_Ptr, size_type _Num)
- {
- if (_Inside(_Ptr))
- return (assign(*this, _Ptr - _Myptr(), _Num));
+}
- if (_Grow(_Num))
- {
- _Traits_helper::copy_s<_Traits>(_Myptr(), _Myres, _Ptr, _Num);
- _Eos(_Num);
- }
- return (*this);
- }
+template< typename T > struct has_nothrow_constructor : ::boost::integral_constant<bool,::boost::detail::has_nothrow_constructor_imp<T>::value> { };
+template< typename T > struct has_nothrow_default_constructor : ::boost::integral_constant<bool,::boost::detail::has_nothrow_constructor_imp<T>::value> { };
- _Myt& assign(const _Elem *_Ptr)
- {
- return (assign(_Ptr, _Traits::length(_Ptr)));
- }
+}
- _Myt& assign(size_type _Count, _Elem _Ch)
- {
- if (_Count == npos)
- _String_base::_Xlen();
- if (_Grow(_Count))
- {
- _Chassign(0, _Count, _Ch);
- _Eos(_Count);
- }
- return (*this);
- }
- template<class _It>
- _Myt& assign(_It _First, _It _Last)
- {
- return (_Assign(_First, _Last, _Iter_cat(_First)));
- }
- template<class _It>
- _Myt& _Assign(_It _Count, _It _Ch, _Int_iterator_tag)
- {
- return (assign((size_type)_Count, (_Elem)_Ch));
- }
- template<class _It>
- _Myt& _Assign(_It _First, _It _Last, input_iterator_tag)
- {
- return (replace(begin(), end(), _First, _Last));
- }
- _Myt& assign(const_pointer _First, const_pointer _Last)
- {
- return (replace(begin(), end(), _First, _Last));
- }
- _Myt& assign(const_iterator _First, const_iterator _Last)
- {
- return (replace(begin(), end(), _First, _Last));
- }
- _Myt& insert(size_type _Off, const _Myt& _Right)
- {
- return (insert(_Off, _Right, 0, npos));
- }
- _Myt& insert(size_type _Off,
- const _Myt& _Right, size_type _Roff, size_type _Count)
- {
- if (_Mysize < _Off || _Right.size() < _Roff)
- _String_base::_Xran();
- size_type _Num = _Right.size() - _Roff;
- if (_Num < _Count)
- _Count = _Num;
- if (npos - _Mysize <= _Count)
- _String_base::_Xlen();
- if (0 < _Count && _Grow(_Num = _Mysize + _Count))
- {
- _Traits_helper::move_s<_Traits>(_Myptr() + _Off + _Count, _Myres - _Off - _Count,
- _Myptr() + _Off, _Mysize - _Off);
- if (this == &_Right)
- _Traits_helper::move_s<_Traits>(_Myptr() + _Off, _Myres - _Off,
- _Myptr() + (_Off < _Roff ? _Roff + _Count : _Roff),
- _Count);
- else
- _Traits_helper::copy_s<_Traits>(_Myptr() + _Off, _Myres - _Off,
- _Right._Myptr() + _Roff, _Count);
- _Eos(_Num);
- }
- return (*this);
- }
- _Myt& insert(size_type _Off,
- const _Elem *_Ptr, size_type _Count)
- {
- if (_Inside(_Ptr))
- return (insert(_Off, *this,
- _Ptr - _Myptr(), _Count));
- if (_Mysize < _Off)
- _String_base::_Xran();
- if (npos - _Mysize <= _Count)
- _String_base::_Xlen();
- size_type _Num;
- if (0 < _Count && _Grow(_Num = _Mysize + _Count))
- {
- _Traits_helper::move_s<_Traits>(_Myptr() + _Off + _Count, _Myres - _Off - _Count,
- _Myptr() + _Off, _Mysize - _Off);
- _Traits_helper::copy_s<_Traits>(_Myptr() + _Off, _Myres - _Off, _Ptr, _Count);
- _Eos(_Num);
- }
- return (*this);
- }
- _Myt& insert(size_type _Off, const _Elem *_Ptr)
- {
- return (insert(_Off, _Ptr, _Traits::length(_Ptr)));
- }
- _Myt& insert(size_type _Off,
- size_type _Count, _Elem _Ch)
- {
- if (_Mysize < _Off)
- _String_base::_Xran();
- if (npos - _Mysize <= _Count)
- _String_base::_Xlen();
- size_type _Num;
- if (0 < _Count && _Grow(_Num = _Mysize + _Count))
- {
- _Traits_helper::move_s<_Traits>(_Myptr() + _Off + _Count, _Myres - _Off - _Count,
- _Myptr() + _Off, _Mysize - _Off);
- _Chassign(_Off, _Count, _Ch);
- _Eos(_Num);
- }
- return (*this);
- }
- iterator insert(iterator _Where)
- {
- return (insert(_Where, _Elem()));
- }
- iterator insert(iterator _Where, _Elem _Ch)
- {
- size_type _Off = _Pdif(_Where, begin());
- insert(_Off, 1, _Ch);
- return (begin() + _Off);
- }
- void insert(iterator _Where, size_type _Count, _Elem _Ch)
- {
- size_type _Off = _Pdif(_Where, begin());
- insert(_Off, _Count, _Ch);
- }
- template<class _It>
- void insert(iterator _Where, _It _First, _It _Last)
- {
- _Insert(_Where, _First, _Last, _Iter_cat(_First));
- }
- template<class _It>
- void _Insert(iterator _Where, _It _Count, _It _Ch,
- _Int_iterator_tag)
- {
- insert(_Where, (size_type)_Count, (_Elem)_Ch);
- }
- template<class _It>
- void _Insert(iterator _Where, _It _First, _It _Last,
- input_iterator_tag)
- {
- replace(_Where, _Where, _First, _Last);
- }
- void insert(iterator _Where, const_pointer _First, const_pointer _Last)
- {
- replace(_Where, _Where, _First, _Last);
- }
- void insert(iterator _Where, const_iterator _First, const_iterator _Last)
- {
- replace(_Where, _Where, _First, _Last);
- }
- _Myt& erase(size_type _Off = 0,
- size_type _Count = npos)
- {
- if (_Mysize < _Off)
- _String_base::_Xran();
- if (_Mysize - _Off < _Count)
- _Count = _Mysize - _Off;
- if (0 < _Count)
- {
- _Traits_helper::move_s<_Traits>(_Myptr() + _Off, _Myres - _Off, _Myptr() + _Off + _Count,
- _Mysize - _Off - _Count);
- size_type _Newsize = _Mysize - _Count;
- _Eos(_Newsize);
- }
- return (*this);
- }
- iterator erase(iterator _Where)
- {
- size_type _Count = _Pdif(_Where, begin());
- erase(_Count, 1);
- return (iterator(_Myptr() + _Count, this));
- }
- iterator erase(iterator _First, iterator _Last)
- {
- size_type _Count = _Pdif(_First, begin());
- erase(_Count, _Pdif(_Last, _First));
- return (iterator(_Myptr() + _Count, this));
- }
- void clear()
- {
- erase(begin(), end());
- }
- _Myt& replace(size_type _Off, size_type _N0, const _Myt& _Right)
- {
- return (replace(_Off, _N0, _Right, 0, npos));
- }
- _Myt& replace(size_type _Off,
- size_type _N0, const _Myt& _Right, size_type _Roff, size_type _Count)
- {
- if (_Mysize < _Off || _Right.size() < _Roff)
- _String_base::_Xran();
- if (_Mysize - _Off < _N0)
- _N0 = _Mysize - _Off;
- size_type _Num = _Right.size() - _Roff;
- if (_Num < _Count)
- _Count = _Num;
- if (npos - _Count <= _Mysize - _N0)
- _String_base::_Xlen();
- size_type _Nm = _Mysize - _N0 - _Off;
- size_type _Newsize = _Mysize + _Count - _N0;
- if (_Mysize < _Newsize)
- _Grow(_Newsize);
- if (this != &_Right)
- {
- _Traits_helper::move_s<_Traits>(_Myptr() + _Off + _Count, _Myres - _Off - _Count,
- _Myptr() + _Off + _N0, _Nm);
- _Traits_helper::copy_s<_Traits>(_Myptr() + _Off, _Myres - _Off,
- _Right._Myptr() + _Roff, _Count);
- }
- else if (_Count <= _N0)
- {
- _Traits_helper::move_s<_Traits>(_Myptr() + _Off, _Myres - _Off,
- _Myptr() + _Roff, _Count);
- _Traits_helper::move_s<_Traits>(_Myptr() + _Off + _Count, _Myres - _Off - _Count,
- _Myptr() + _Off + _N0, _Nm);
- }
- else if (_Roff <= _Off)
- {
- _Traits_helper::move_s<_Traits>(_Myptr() + _Off + _Count, _Myres - _Off - _Count,
- _Myptr() + _Off + _N0, _Nm);
- _Traits_helper::move_s<_Traits>(_Myptr() + _Off, _Myres - _Off,
- _Myptr() + _Roff, _Count);
- }
- else if (_Off + _N0 <= _Roff)
- {
- _Traits_helper::move_s<_Traits>(_Myptr() + _Off + _Count, _Myres - _Off - _Count,
- _Myptr() + _Off + _N0, _Nm);
- _Traits_helper::move_s<_Traits>(_Myptr() + _Off, _Myres - _Off,
- _Myptr() + (_Roff + _Count - _N0), _Count);
- }
- else
- {
- _Traits_helper::move_s<_Traits>(_Myptr() + _Off, _Myres - _Off,
- _Myptr() + _Roff, _N0);
- _Traits_helper::move_s<_Traits>(_Myptr() + _Off + _Count, _Myres - _Off - _Count,
- _Myptr() + _Off + _N0, _Nm);
- _Traits_helper::move_s<_Traits>(_Myptr() + _Off + _N0, _Myres - _Off - _N0, _Myptr() + _Roff + _Count,
- _Count - _N0);
- }
- _Eos(_Newsize);
- return (*this);
- }
- _Myt& replace(size_type _Off,
- size_type _N0, const _Elem *_Ptr, size_type _Count)
- {
- if (_Inside(_Ptr))
- return (replace(_Off, _N0, *this,
- _Ptr - _Myptr(), _Count));
- if (_Mysize < _Off)
- _String_base::_Xran();
- if (_Mysize - _Off < _N0)
- _N0 = _Mysize - _Off;
- if (npos - _Count <= _Mysize - _N0)
- _String_base::_Xlen();
- size_type _Nm = _Mysize - _N0 - _Off;
- if (_Count < _N0)
- _Traits_helper::move_s<_Traits>(_Myptr() + _Off + _Count, _Myres - _Off - _Count,
- _Myptr() + _Off + _N0, _Nm);
- size_type _Num;
- if ((0 < _Count || 0 < _N0) && _Grow(_Num = _Mysize + _Count - _N0))
- {
- if (_N0 < _Count)
- _Traits_helper::move_s<_Traits>(_Myptr() + _Off + _Count, _Myres - _Off - _Count,
- _Myptr() + _Off + _N0, _Nm);
- _Traits_helper::copy_s<_Traits>(_Myptr() + _Off, _Myres - _Off, _Ptr, _Count);
- _Eos(_Num);
- }
- return (*this);
- }
- _Myt& replace(size_type _Off, size_type _N0, const _Elem *_Ptr)
- {
- return (replace(_Off, _N0, _Ptr, _Traits::length(_Ptr)));
- }
- _Myt& replace(size_type _Off,
- size_type _N0, size_type _Count, _Elem _Ch)
- {
- if (_Mysize < _Off)
- _String_base::_Xran();
- if (_Mysize - _Off < _N0)
- _N0 = _Mysize - _Off;
- if (npos - _Count <= _Mysize - _N0)
- _String_base::_Xlen();
- size_type _Nm = _Mysize - _N0 - _Off;
- if (_Count < _N0)
- _Traits_helper::move_s<_Traits>(_Myptr() + _Off + _Count, _Myres - _Off - _Count,
- _Myptr() + _Off + _N0, _Nm);
- size_type _Num;
- if ((0 < _Count || 0 < _N0) && _Grow(_Num = _Mysize + _Count - _N0))
- {
- if (_N0 < _Count)
- _Traits_helper::move_s<_Traits>(_Myptr() + _Off + _Count, _Myres - _Off - _Count,
- _Myptr() + _Off + _N0, _Nm);
- _Chassign(_Off, _Count, _Ch);
- _Eos(_Num);
- }
- return (*this);
- }
- _Myt& replace(iterator _First, iterator _Last, const _Myt& _Right)
- {
- return (replace(
- _Pdif(_First, begin()), _Pdif(_Last, _First), _Right));
- }
- _Myt& replace(iterator _First, iterator _Last, const _Elem *_Ptr,
- size_type _Count)
- {
- return (replace(
- _Pdif(_First, begin()), _Pdif(_Last, _First), _Ptr, _Count));
- }
- _Myt& replace(iterator _First, iterator _Last, const _Elem *_Ptr)
- {
- return (replace(
- _Pdif(_First, begin()), _Pdif(_Last, _First), _Ptr));
- }
- _Myt& replace(iterator _First, iterator _Last,
- size_type _Count, _Elem _Ch)
- {
- return (replace(
- _Pdif(_First, begin()), _Pdif(_Last, _First), _Count, _Ch));
- }
- template<class _It>
- _Myt& replace(iterator _First, iterator _Last,
- _It _First2, _It _Last2)
- {
- return (_Replace(_First, _Last,
- _First2, _Last2, _Iter_cat(_First2)));
- }
- template<class _It>
- _Myt& _Replace(iterator _First, iterator _Last,
- _It _Count, _It _Ch, _Int_iterator_tag)
- {
- return (replace(_First, _Last, (size_type)_Count, (_Elem)_Ch));
- }
- template<class _It>
- _Myt& _Replace(iterator _First, iterator _Last,
- _It _First2, _It _Last2, input_iterator_tag)
- {
- _Myt _Right(_First2, _Last2);
- replace(_First, _Last, _Right);
- return (*this);
- }
- _Myt& replace(iterator _First, iterator _Last,
- const_pointer _First2, const_pointer _Last2)
- {
- if (_First2 == _Last2)
- erase(_Pdif(_First, begin()), _Pdif(_Last, _First));
- else
- replace(_Pdif(_First, begin()), _Pdif(_Last, _First),
- &*_First2, _Last2 - _First2);
- return (*this);
- }
- _Myt& replace(iterator _First, iterator _Last,
- const_iterator _First2, const_iterator _Last2)
- {
- if (_First2 == _Last2)
- erase(_Pdif(_First, begin()), _Pdif(_Last, _First));
- else
- replace(_Pdif(_First, begin()), _Pdif(_Last, _First),
- &*_First2, _Last2 - _First2);
- return (*this);
- }
- iterator begin()
- {
- return (iterator(_Myptr(), this));
- }
- const_iterator begin() const
- {
- return (const_iterator(_Myptr(), this));
- }
- iterator end()
- {
- return (iterator(_Myptr() + _Mysize, this));
- }
- const_iterator end() const
- {
- return (const_iterator(_Myptr() + _Mysize, this));
- }
- reverse_iterator rbegin()
- {
- return (reverse_iterator(end()));
- }
- const_reverse_iterator rbegin() const
- {
- return (const_reverse_iterator(end()));
- }
- reverse_iterator rend()
- {
- return (reverse_iterator(begin()));
- }
- const_reverse_iterator rend() const
- {
- return (const_reverse_iterator(begin()));
- }
- reference at(size_type _Off)
- {
- if (_Mysize <= _Off)
- _String_base::_Xran();
- return (_Myptr()[_Off]);
- }
- const_reference at(size_type _Off) const
- {
- if (_Mysize <= _Off)
- _String_base::_Xran();
- return (_Myptr()[_Off]);
- }
-
- reference operator[](size_type _Off)
- {
-
@@ -124184,16 +120056,9 @@
- { if (!(_Off <= _Mysize)) { ((void)0); ::_invalid_parameter_noinfo(); } ; };
-
- return (_Myptr()[_Off]);
- }
- const_reference operator[](size_type _Off) const
- {
-
@@ -124204,15 +120069,9 @@
- { if (!(_Off <= _Mysize)) { ((void)0); ::_invalid_parameter_noinfo(); } ; };
-
- return (_Myptr()[_Off]);
- }
-
-
@@ -124258,524 +120117,84 @@
- void push_back(_Elem _Ch)
- {
- insert(end(), _Ch);
- }
- const _Elem * c_str() const
- {
- return (_Myptr());
- }
- const _Elem * data() const
- {
- return (c_str());
- }
- size_type length() const
- {
- return (_Mysize);
- }
- size_type size() const
- {
- return (_Mysize);
- }
- size_type max_size() const
- {
- size_type _Num = _Mybase::_Alval.max_size();
- return (_Num <= 1 ? 1 : _Num - 1);
- }
- void resize(size_type _Newsize)
- {
- resize(_Newsize, _Elem());
- }
- void resize(size_type _Newsize, _Elem _Ch)
- {
- if (_Newsize <= _Mysize)
- erase(_Newsize);
- else
- append(_Newsize - _Mysize, _Ch);
- }
- size_type capacity() const
- {
- return (_Myres);
- }
- void reserve(size_type _Newcap = 0)
- {
- if (_Mysize <= _Newcap && _Myres != _Newcap)
- {
- size_type _Size = _Mysize;
- if (_Grow(_Newcap, true))
- _Eos(_Size);
- }
- }
- bool empty() const
- {
- return (_Mysize == 0);
- }
- __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
- size_type copy(_Elem *_Dest,
- size_type _Count, size_type _Off = 0) const
- {
-
- return _Copy_s(_Dest, _Count, _Count, _Off);
- }
- size_type _Copy_s(_Elem *_Dest, size_type _Dest_size,
- size_type _Count, size_type _Off = 0) const
- {
- ;
- if (_Mysize < _Off)
- _String_base::_Xran();
- if (_Mysize - _Off < _Count)
- _Count = _Mysize - _Off;
- _Traits_helper::copy_s<_Traits>(_Dest, _Dest_size, _Myptr() + _Off, _Count);
- return (_Count);
- }
- void swap(_Myt& _Right)
- {
- if (_Mybase::_Alval == _Right._Alval)
- {
-
- _Bxty _Tbx = _Bx;
- _Bx = _Right._Bx, _Right._Bx = _Tbx;
- size_type _Tlen = _Mysize;
- _Mysize = _Right._Mysize, _Right._Mysize = _Tlen;
- size_type _Tres = _Myres;
- _Myres = _Right._Myres, _Right._Myres = _Tres;
- }
- else
- {
- _Myt _Tmp = *this; *this = _Right, _Right = _Tmp;
- }
- }
- size_type find(const _Myt& _Right, size_type _Off = 0) const
- {
- return (find(_Right._Myptr(), _Off, _Right.size()));
- }
- size_type find(const _Elem *_Ptr,
- size_type _Off, size_type _Count) const
- {
- ;
- if (_Count == 0 && _Off <= _Mysize)
- return (_Off);
- size_type _Nm;
- if (_Off < _Mysize && _Count <= (_Nm = _Mysize - _Off))
- {
- const _Elem *_Uptr, *_Vptr;
- for (_Nm -= _Count - 1, _Vptr = _Myptr() + _Off;
- (_Uptr = _Traits::find(_Vptr, _Nm, *_Ptr)) != 0;
- _Nm -= _Uptr - _Vptr + 1, _Vptr = _Uptr + 1)
- if (_Traits::compare(_Uptr, _Ptr, _Count) == 0)
- return (_Uptr - _Myptr());
- }
- return (npos);
- }
- size_type find(const _Elem *_Ptr, size_type _Off = 0) const
- {
- return (find(_Ptr, _Off, _Traits::length(_Ptr)));
- }
- size_type find(_Elem _Ch, size_type _Off = 0) const
- {
- return (find((const _Elem *)&_Ch, _Off, 1));
- }
- size_type rfind(const _Myt& _Right, size_type _Off = npos) const
- {
- return (rfind(_Right._Myptr(), _Off, _Right.size()));
- }
- size_type rfind(const _Elem *_Ptr,
- size_type _Off, size_type _Count) const
- {
- ;
- if (_Count == 0)
- return (_Off < _Mysize ? _Off : _Mysize);
- if (_Count <= _Mysize)
- {
- const _Elem *_Uptr = _Myptr() +
- (_Off < _Mysize - _Count ? _Off : _Mysize - _Count);
- for (; ; --_Uptr)
- if (_Traits::eq(*_Uptr, *_Ptr)
- && _Traits::compare(_Uptr, _Ptr, _Count) == 0)
- return (_Uptr - _Myptr());
- else if (_Uptr == _Myptr())
- break;
- }
- return (npos);
- }
- size_type rfind(const _Elem *_Ptr, size_type _Off = npos) const
- {
- return (rfind(_Ptr, _Off, _Traits::length(_Ptr)));
- }
- size_type rfind(_Elem _Ch, size_type _Off = npos) const
- {
- return (rfind((const _Elem *)&_Ch, _Off, 1));
- }
- size_type find_first_of(const _Myt& _Right,
- size_type _Off = 0) const
- {
- return (find_first_of(_Right._Myptr(), _Off, _Right.size()));
- }
- size_type find_first_of(const _Elem *_Ptr,
- size_type _Off, size_type _Count) const
- {
- ;
- if (0 < _Count && _Off < _Mysize)
- {
- const _Elem *const _Vptr = _Myptr() + _Mysize;
- for (const _Elem *_Uptr = _Myptr() + _Off; _Uptr < _Vptr; ++_Uptr)
- if (_Traits::find(_Ptr, _Count, *_Uptr) != 0)
- return (_Uptr - _Myptr());
- }
- return (npos);
- }
- size_type find_first_of(const _Elem *_Ptr, size_type _Off = 0) const
- {
- return (find_first_of(_Ptr, _Off, _Traits::length(_Ptr)));
- }
- size_type find_first_of(_Elem _Ch, size_type _Off = 0) const
- {
- return (find((const _Elem *)&_Ch, _Off, 1));
- }
- size_type find_last_of(const _Myt& _Right,
- size_type _Off = npos) const
- {
- return (find_last_of(_Right._Myptr(), _Off, _Right.size()));
- }
- size_type find_last_of(const _Elem *_Ptr,
- size_type _Off, size_type _Count) const
- {
- ;
- if (0 < _Count && 0 < _Mysize)
- for (const _Elem *_Uptr = _Myptr()
- + (_Off < _Mysize ? _Off : _Mysize - 1); ; --_Uptr)
- if (_Traits::find(_Ptr, _Count, *_Uptr) != 0)
- return (_Uptr - _Myptr());
- else if (_Uptr == _Myptr())
- break;
- return (npos);
- }
- size_type find_last_of(const _Elem *_Ptr,
- size_type _Off = npos) const
- {
- return (find_last_of(_Ptr, _Off, _Traits::length(_Ptr)));
- }
- size_type find_last_of(_Elem _Ch, size_type _Off = npos) const
- {
- return (rfind((const _Elem *)&_Ch, _Off, 1));
- }
- size_type find_first_not_of(const _Myt& _Right,
- size_type _Off = 0) const
- {
- return (find_first_not_of(_Right._Myptr(), _Off,
- _Right.size()));
- }
- size_type find_first_not_of(const _Elem *_Ptr,
- size_type _Off, size_type _Count) const
- {
- ;
- if (_Off < _Mysize)
- {
- const _Elem *const _Vptr = _Myptr() + _Mysize;
- for (const _Elem *_Uptr = _Myptr() + _Off; _Uptr < _Vptr; ++_Uptr)
- if (_Traits::find(_Ptr, _Count, *_Uptr) == 0)
- return (_Uptr - _Myptr());
- }
- return (npos);
- }
- size_type find_first_not_of(const _Elem *_Ptr,
- size_type _Off = 0) const
- {
- return (find_first_not_of(_Ptr, _Off, _Traits::length(_Ptr)));
- }
- size_type find_first_not_of(_Elem _Ch, size_type _Off = 0) const
- {
- return (find_first_not_of((const _Elem *)&_Ch, _Off, 1));
- }
- size_type find_last_not_of(const _Myt& _Right,
- size_type _Off = npos) const
- {
- return (find_last_not_of(_Right._Myptr(), _Off, _Right.size()));
- }
- size_type find_last_not_of(const _Elem *_Ptr,
- size_type _Off, size_type _Count) const
- {
- ;
- if (0 < _Mysize)
- for (const _Elem *_Uptr = _Myptr()
- + (_Off < _Mysize ? _Off : _Mysize - 1); ; --_Uptr)
- if (_Traits::find(_Ptr, _Count, *_Uptr) == 0)
- return (_Uptr - _Myptr());
- else if (_Uptr == _Myptr())
- break;
- return (npos);
- }
- size_type find_last_not_of(const _Elem *_Ptr,
- size_type _Off = npos) const
- {
- return (find_last_not_of(_Ptr, _Off, _Traits::length(_Ptr)));
- }
- size_type find_last_not_of(_Elem _Ch, size_type _Off = npos) const
- {
- return (find_last_not_of((const _Elem *)&_Ch, _Off, 1));
- }
- _Myt substr(size_type _Off = 0, size_type _Count = npos) const
- {
- return (_Myt(*this, _Off, _Count));
- }
- int compare(const _Myt& _Right) const
- {
- return (compare(0, _Mysize, _Right._Myptr(), _Right.size()));
- }
- int compare(size_type _Off, size_type _N0,
- const _Myt& _Right) const
- {
- return (compare(_Off, _N0, _Right, 0, npos));
- }
- int compare(size_type _Off,
- size_type _N0, const _Myt& _Right,
- size_type _Roff, size_type _Count) const
- {
- if (_Right.size() < _Roff)
- _String_base::_Xran();
- if (_Right._Mysize - _Roff < _Count)
- _Count = _Right._Mysize - _Roff;
- return (compare(_Off, _N0, _Right._Myptr() + _Roff, _Count));
- }
- int compare(const _Elem *_Ptr) const
- {
- return (compare(0, _Mysize, _Ptr, _Traits::length(_Ptr)));
- }
- int compare(size_type _Off, size_type _N0, const _Elem *_Ptr) const
- {
- return (compare(_Off, _N0, _Ptr, _Traits::length(_Ptr)));
- }
- int compare(size_type _Off,
- size_type _N0, const _Elem *_Ptr, size_type _Count) const
- {
- ;
- if (_Mysize < _Off)
- _String_base::_Xran();
- if (_Mysize - _Off < _N0)
- _N0 = _Mysize - _Off;
- size_type _Ans = _Traits::compare(_Myptr() + _Off, _Ptr,
- _N0 < _Count ? _N0 : _Count);
- return (_Ans != 0 ? (int)_Ans : _N0 < _Count ? -1
- : _N0 == _Count ? 0 : +1);
- }
- allocator_type get_allocator() const
- {
- return (_Mybase::_Alval);
- }
- enum
- {
- _BUF_SIZE = 16 / sizeof (_Elem) < 1 ? 1
- : 16 / sizeof(_Elem)};
-protected:
- enum
- {
- _ALLOC_MASK = sizeof (_Elem) <= 1 ? 15
- : sizeof (_Elem) <= 2 ? 7
- : sizeof (_Elem) <= 4 ? 3
- : sizeof (_Elem) <= 8 ? 1 : 0};
- void _Chassign(size_type _Off, size_type _Count, _Elem _Ch)
- {
- if (_Count == 1)
- _Traits::assign(*(_Myptr() + _Off), _Ch);
- else
- _Traits::assign(_Myptr() + _Off, _Count, _Ch);
- }
- void _Copy(size_type _Newsize, size_type _Oldlen)
- {
- size_type _Newres = _Newsize | _ALLOC_MASK;
- if (max_size() < _Newres)
- _Newres = _Newsize;
- else if (_Newres / 3 < _Myres / 2
- && _Myres <= max_size() - _Myres / 2)
- _Newres = _Myres + _Myres / 2;
- _Elem *_Ptr = 0;
- try {
- _Ptr = _Mybase::_Alval.allocate(_Newres + 1);
- } catch (...) {
- _Newres = _Newsize;
- try {
- _Ptr = _Mybase::_Alval.allocate(_Newres + 1);
- } catch (...) {
- _Tidy(true);
- throw;
- }
- }
- if (0 < _Oldlen)
- _Traits_helper::copy_s<_Traits>(_Ptr, _Newres + 1, _Myptr(), _Oldlen);
- _Tidy(true);
- _Bx._Ptr = _Ptr;
- _Myres = _Newres;
- _Eos(_Oldlen);
- }
- void _Eos(size_type _Newsize)
- {
- _Traits::assign(_Myptr()[_Mysize = _Newsize], _Elem());
- }
- bool _Grow(size_type _Newsize,
- bool _Trim = false)
- {
- if (max_size() < _Newsize)
- _String_base::_Xlen();
- if (_Myres < _Newsize)
- _Copy(_Newsize, _Mysize);
- else if (_Trim && _Newsize < _BUF_SIZE)
- _Tidy(true,
- _Newsize < _Mysize ? _Newsize : _Mysize);
- else if (_Newsize == 0)
- _Eos(0);
- return (0 < _Newsize);
- }
- bool _Inside(const _Elem *_Ptr)
- {
- ;
- if (_Ptr < _Myptr() || _Myptr() + _Mysize <= _Ptr)
- return (false);
- else
- return (true);
- }
- static size_type __cdecl _Pdif(const_iterator _P2,
- const_iterator _P1)
- {
- return ((_P2)._Myptr == 0 ? 0 : _P2 - _P1);
- }
- void _Tidy(bool _Built = false,
- size_type _Newsize = 0)
- {
- if (!_Built)
- ;
- else if (_BUF_SIZE <= _Myres)
- {
- _Elem *_Ptr = _Bx._Ptr;
- if (0 < _Newsize)
- _Traits_helper::copy_s<_Traits>(_Bx._Buf, _BUF_SIZE, _Ptr, _Newsize);
- _Mybase::_Alval.deallocate(_Ptr, _Myres + 1);
- }
- _Myres = _BUF_SIZE - 1;
- _Eos(_Newsize);
- }
- union _Bxty
- {
- _Elem _Buf[_BUF_SIZE];
- _Elem *_Ptr;
- } _Bx;
- _Elem * _Myptr()
- {
- return (_BUF_SIZE <= _Myres ? _Bx._Ptr : _Bx._Buf);
- }
- const _Elem * _Myptr() const
- {
- return (_BUF_SIZE <= _Myres ? _Bx._Ptr : _Bx._Buf);
- }
- size_type _Mysize;
- size_type _Myres;
- };
-
-template<class _Elem, class _Traits, class _Ax>
- class _Move_operation_category<basic_string<_Elem, _Traits, _Ax> >
- {
- public:
- typedef _Swap_move_tag _Move_cat;
- };
-
-template<class _Elem,
- class _Traits,
- class _Alloc>
- const typename basic_string<_Elem, _Traits, _Alloc>::size_type
- basic_string<_Elem, _Traits, _Alloc>::npos =
- (typename basic_string<_Elem, _Traits, _Alloc>::size_type)(-1);
-
-template<class _Elem,
- class _Traits,
- class _Alloc> inline
- void __cdecl swap(basic_string<_Elem, _Traits, _Alloc>& _Left,
- basic_string<_Elem, _Traits, _Alloc>& _Right)
- {
- _Left.swap(_Right);
- }
-typedef basic_string<char, char_traits<char>, allocator<char> >
- string;
-typedef basic_string<wchar_t, char_traits<wchar_t>,
- allocator<wchar_t> > wstring;
-
@@ -124790,11 +120209,7 @@
-}
- #pragma warning(default: 4251)
-#pragma warning(pop)
-#pragma pack(pop)
@@ -124808,36 +120223,16 @@
-#pragma pack(push,8)
-#pragma warning(push,3)
-namespace std {
-
-class logic_error
- : public std:: exception
- {
-public:
- explicit logic_error(const string& _Message)
- : _Str(_Message)
- {
- }
- virtual ~logic_error() throw ()
- {
- }
- virtual const char * what() const throw ()
- {
- return (_Str.c_str());
- }
-
@@ -124845,25 +120240,9 @@
-private:
- string _Str;
- };
-
-class domain_error
- : public logic_error
- {
-public:
- explicit domain_error(const string& _Message)
- : logic_error(_Message)
- {
- }
- virtual ~domain_error() throw ()
- {
- }
-
@@ -124871,23 +120250,9 @@
- };
-
-class invalid_argument
- : public logic_error
- {
-public:
- explicit invalid_argument(const string& _Message)
- : logic_error(_Message)
- {
- }
- virtual ~invalid_argument() throw ()
- {
- }
-
@@ -124895,23 +120260,9 @@
- };
-
-class length_error
- : public logic_error
- {
-public:
- explicit length_error(const string& _Message)
- : logic_error(_Message)
- {
- }
- virtual ~length_error() throw ()
- {
- }
-
@@ -124919,23 +120270,9 @@
- };
-
-class out_of_range
- : public logic_error
- {
-public:
- explicit out_of_range(const string& _Message)
- : logic_error(_Message)
- {
- }
- virtual ~out_of_range() throw ()
- {
- }
-
@@ -124943,28 +120280,10 @@
- };
-
-class runtime_error
- : public std:: exception
- {
-public:
- explicit runtime_error(const string& _Message)
- : _Str(_Message)
- {
- }
- virtual ~runtime_error() throw ()
- {
- }
- virtual const char * what() const throw ()
- {
- return (_Str.c_str());
- }
-
@@ -124972,25 +120291,9 @@
-private:
- string _Str;
- };
-
-class overflow_error
- : public runtime_error
- {
-public:
- explicit overflow_error(const string& _Message)
- : runtime_error(_Message)
- {
- }
- virtual ~overflow_error() throw ()
- {
- }
-
@@ -124998,23 +120301,9 @@
- };
-
-class underflow_error
- : public runtime_error
- {
-public:
- explicit underflow_error(const string& _Message)
- : runtime_error(_Message)
- {
- }
- virtual ~underflow_error() throw ()
- {
- }
-
@@ -125022,23 +120311,9 @@
- };
-
-class range_error
- : public runtime_error
- {
-public:
- explicit range_error(const string& _Message)
- : runtime_error(_Message)
- {
- }
- virtual ~range_error() throw ()
- {
- }
-
@@ -125046,7 +120321,6 @@
- };
@@ -125070,11 +120344,8 @@
-}
-#pragma warning(pop)
-#pragma pack(pop)
@@ -125088,27 +120359,16 @@
-#pragma once
-#pragma pack(push,8)
-#pragma warning(push,3)
-namespace std {
-struct _DebugHeapTag_t
- {
- int _Type;
- };
-}
-
-
@@ -125232,15 +120492,8 @@
-
-
-
-
-
-#pragma warning(pop)
-#pragma pack(pop)
@@ -125254,13 +120507,11 @@
-#pragma once
-#pragma once
@@ -125278,7 +120529,6 @@
-#pragma once
@@ -125299,7 +120549,6 @@
-
@@ -126261,11 +121510,22 @@
+namespace boost {
+namespace detail {
+template <typename T>
+struct has_trivial_copy_impl
+{
+ static const bool value = (::boost::type_traits::ice_and< ::boost::type_traits::ice_or< ::boost::is_pod<T>::value, __has_trivial_copy(T) >::value, ::boost::type_traits::ice_not< ::boost::is_volatile<T>::value >::value >::value);
+};
+}
+template< typename T > struct has_trivial_copy : ::boost::integral_constant<bool,::boost::detail::has_trivial_copy_impl<T>::value> { };
+template< typename T > struct has_trivial_copy_constructor : ::boost::integral_constant<bool,::boost::detail::has_trivial_copy_impl<T>::value> { };
+}
@@ -127019,11 +122279,21 @@
+namespace boost {
+namespace detail{
+template <class T>
+struct has_nothrow_copy_imp{
+ static const bool value = (::boost::type_traits::ice_or< ::boost::has_trivial_copy<T>::value, __has_nothrow_copy(T) >::value);
+};
+}
+template< typename T > struct has_nothrow_copy : ::boost::integral_constant<bool,::boost::detail::has_nothrow_copy_imp<T>::value> { };
+template< typename T > struct has_nothrow_copy_constructor : ::boost::integral_constant<bool,::boost::detail::has_nothrow_copy_imp<T>::value> { };
+}
@@ -127078,7 +122348,6 @@
-extern "C" {
@@ -127134,7 +122403,6 @@
-
@@ -127148,40 +122416,6 @@
- int __cdecl _isctype( int _C, int _Type);
- int __cdecl _isctype_l( int _C, int _Type, _locale_t _Locale);
- int __cdecl isalpha( int _C);
- int __cdecl _isalpha_l( int _C, _locale_t _Locale);
- int __cdecl isupper( int _C);
- int __cdecl _isupper_l( int _C, _locale_t _Locale);
- int __cdecl islower( int _C);
- int __cdecl _islower_l( int _C, _locale_t _Locale);
- int __cdecl isdigit( int _C);
- int __cdecl _isdigit_l( int _C, _locale_t _Locale);
- int __cdecl isxdigit( int _C);
- int __cdecl _isxdigit_l( int _C, _locale_t _Locale);
- int __cdecl isspace( int _C);
- int __cdecl _isspace_l( int _C, _locale_t _Locale);
- int __cdecl ispunct( int _C);
- int __cdecl _ispunct_l( int _C, _locale_t _Locale);
- int __cdecl isalnum( int _C);
- int __cdecl _isalnum_l( int _C, _locale_t _Locale);
- int __cdecl isprint( int _C);
- int __cdecl _isprint_l( int _C, _locale_t _Locale);
- int __cdecl isgraph( int _C);
- int __cdecl _isgraph_l( int _C, _locale_t _Locale);
- int __cdecl iscntrl( int _C);
- int __cdecl _iscntrl_l( int _C, _locale_t _Locale);
- int __cdecl toupper( int _C);
- int __cdecl tolower( int _C);
- int __cdecl _tolower( int _C);
- int __cdecl _tolower_l( int _C, _locale_t _Locale);
- int __cdecl _toupper( int _C);
- int __cdecl _toupper_l( int _C, _locale_t _Locale);
- int __cdecl __isascii( int _C);
- int __cdecl __toascii( int _C);
- int __cdecl __iscsymf( int _C);
- int __cdecl __iscsym( int _C);
@@ -127435,7 +122669,6 @@
-}
@@ -127455,7 +122688,6 @@
-#pragma once
@@ -127476,7 +122708,6 @@
-
@@ -128360,11 +123591,21 @@
+namespace boost {
+namespace detail {
+template <typename T>
+struct has_trivial_dtor_impl
+{
+ static const bool value = (::boost::type_traits::ice_or< ::boost::is_pod<T>::value, __has_trivial_destructor(T) >::value);
+};
+}
+template< typename T > struct has_trivial_destructor : ::boost::integral_constant<bool,::boost::detail::has_trivial_dtor_impl<T>::value> { };
+}
@@ -129118,8 +124359,11 @@
+namespace boost {
+template< typename T > struct has_nothrow_destructor : ::boost::integral_constant<bool,::boost::has_trivial_destructor<T>::value> { };
+}
@@ -129259,11 +124503,9 @@
-#pragma pack(push,8)
-extern "C" {
@@ -129290,26 +124532,6 @@
-struct lconv {
- char *decimal_point;
- char *thousands_sep;
- char *grouping;
- char *int_curr_symbol;
- char *currency_symbol;
- char *mon_decimal_point;
- char *mon_thousands_sep;
- char *mon_grouping;
- char *positive_sign;
- char *negative_sign;
- char int_frac_digits;
- char frac_digits;
- char p_cs_precedes;
- char p_sep_by_space;
- char n_cs_precedes;
- char n_sep_by_space;
- char p_sign_posn;
- char n_sign_posn;
- };
@@ -129334,17 +124556,8 @@
- int __cdecl _configthreadlocale( int _Flag);
- char * __cdecl setlocale( int _Category, const char * _Locale);
- struct lconv * __cdecl localeconv(void);
- _locale_t __cdecl _get_current_locale(void);
- _locale_t __cdecl _create_locale( int _Category, const char * _Locale);
- void __cdecl _free_locale( _locale_t _Locale);
-__declspec(deprecated("This function or variable has been superceded by newer library or operating system functionality. Consider using" "_get_current_locale" "instead. See online help for details.")) _locale_t __cdecl __get_current_locale(void);
-__declspec(deprecated("This function or variable has been superceded by newer library or operating system functionality. Consider using" "_create_locale" "instead. See online help for details.")) _locale_t __cdecl __create_locale( int _Category, const char * _Locale);
-__declspec(deprecated("This function or variable has been superceded by newer library or operating system functionality. Consider using" "_free_locale" "instead. See online help for details.")) void __cdecl __free_locale( _locale_t _Locale);
@@ -129356,11 +124569,9 @@
-}
-#pragma pack(pop)
@@ -129371,15 +124582,12 @@
-#pragma pack(push,8)
-extern "C" {
-
@@ -129391,7 +124599,6 @@
-
@@ -129411,79 +124618,19 @@
-typedef struct _Collvec
- {
- unsigned long _Hand;
- unsigned int _Page;
- } _Collvec;
-typedef struct _Ctypevec
- {
- unsigned long _Hand;
- unsigned int _Page;
- const short *_Table;
- int _Delfl;
- } _Ctypevec;
-typedef struct _Cvtvec
- {
- unsigned long _Hand;
- unsigned int _Page;
- } _Cvtvec;
-
- _Collvec __cdecl _Getcoll();
- _Ctypevec __cdecl _Getctype();
- _Cvtvec __cdecl _Getcvt();
- int __cdecl _Getdateorder();
- int __cdecl _Mbrtowc( wchar_t *, const char *, size_t,
- mbstate_t *, const _Cvtvec *);
- float __cdecl _Stof(const char *, char **, long);
- double __cdecl _Stod(const char *, char **, long);
- long double __cdecl _Stold(const char *, char **,
- long);
- int __cdecl _Strcoll(const char *, const char *,
- const char *, const char *, const _Collvec *);
- size_t __cdecl _Strxfrm(
- char * _String1,
- char * _End1, const char *, const char *, const _Collvec *);
- int __cdecl _Tolower(int, const _Ctypevec *);
- int __cdecl _Toupper(int, const _Ctypevec *);
- int __cdecl _Wcrtomb( char *, wchar_t, mbstate_t *,
- const _Cvtvec *);
- int __cdecl _Wcscoll(const wchar_t *, const wchar_t *,
- const wchar_t *, const wchar_t *, const _Collvec *);
- size_t __cdecl _Wcsxfrm(
- wchar_t *_String1,
- wchar_t *_End1, const wchar_t *, const wchar_t *, const _Collvec *);
- short __cdecl _Getwctype(wchar_t, const _Ctypevec *);
- const wchar_t * __cdecl _Getwctypes(const wchar_t *, const wchar_t *,
- short*, const _Ctypevec*);
- wchar_t __cdecl _Towlower(wchar_t, const _Ctypevec *);
- wchar_t __cdecl _Towupper(wchar_t, const _Ctypevec *);
-}
-extern "C" {
- void *__cdecl _Gettnames();
- char *__cdecl _Getdays();
- char *__cdecl _Getmonths();
- size_t __cdecl _Strftime(
- char *, size_t _Maxsize,
- const char *, const struct tm *, void *);
-}
-extern "C" {
-_locale_t __cdecl _GetLocaleForCP(unsigned int);
-}
-#pragma pack(pop)
@@ -129497,252 +124644,52 @@
-#pragma pack(push,8)
-#pragma warning(push,3)
-#pragma warning(disable:4412)
-namespace std {
-
-class _Timevec
- {
-public:
- _Timevec(void *_Ptr = 0)
- : _Timeptr(_Ptr)
- {
- }
- _Timevec(const _Timevec& _Right)
- {
- *this = _Right;
- }
- ~_Timevec()
- {
- free(_Timeptr);
- }
- _Timevec& operator=(const _Timevec& _Right)
- {
- _Timeptr = _Right._Timeptr;
- ((_Timevec *)&_Right)->_Timeptr = 0;
- return (*this);
- }
- void * _Getptr() const
- {
- return (_Timeptr);
- }
-private:
- void *_Timeptr;
- };
-
-#pragma warning(push)
-#pragma warning(disable:4412)
-class _Locinfo
- {
-public:
- typedef ::_Collvec _Collvec;
- typedef ::_Ctypevec _Ctypevec;
- typedef ::_Cvtvec _Cvtvec;
- typedef std::_Timevec _Timevec;
- static void __cdecl _Locinfo_ctor(_Locinfo *, const char *);
- static void __cdecl _Locinfo_ctor(_Locinfo *, int, const char *);
- static void __cdecl _Locinfo_dtor(_Locinfo *);
- static _Locinfo& __cdecl _Locinfo_Addcats(_Locinfo *, int, const char *);
- _Locinfo(const char *_Pch = "C")
- : _Lock(0)
- {
- if (_Pch == 0)
- throw runtime_error("bad locale name");
- _Locinfo_ctor(this, _Pch);
- }
- _Locinfo(int _I, const char *_Pch)
- : _Lock(0)
- {
- if (_Pch == 0)
- throw runtime_error("bad locale name");
- _Locinfo_ctor(this, _I, _Pch);
- }
- ~_Locinfo()
- {
- _Locinfo_dtor(this);
- }
- _Locinfo& _Addcats(int _I, const char *_Pch)
- {
- if (_Pch == 0)
- throw runtime_error("bad locale name");
- return _Locinfo_Addcats(this, _I, _Pch);
- }
- string _Getname() const
- {
- return (_Newlocname);
- }
- _Collvec _Getcoll() const
- {
- return (::_Getcoll());
- }
- _Ctypevec _Getctype() const
- {
- return (::_Getctype());
- }
- _Cvtvec _Getcvt() const
- {
- return (::_Getcvt());
- }
- const lconv * _Getlconv() const
- {
- return (localeconv());
- }
- _Timevec _Gettnames() const
- {
- return (_Timevec(::_Gettnames()));
- }
- const char * _Getdays() const
- {
- const char *_Ptr = ::_Getdays();
- if (_Ptr != 0)
- {
- ((_Locinfo *)this)->_Days = _Ptr;
- free((void *)_Ptr);
- }
- return (_Days.size() != 0 ? _Days.c_str()
- : ":Sun:Sunday:Mon:Monday:Tue:Tuesday:Wed:Wednesday"
- ":Thu:Thursday:Fri:Friday:Sat:Saturday");
- }
- const char * _Getmonths() const
- {
- const char *_Ptr = ::_Getmonths();
- if (_Ptr != 0)
- {
- ((_Locinfo *)this)->_Months = _Ptr;
- free((void *)_Ptr);
- }
- return (_Months.size() != 0 ? _Months.c_str()
- : ":Jan:January:Feb:February:Mar:March"
- ":Apr:April:May:May:Jun:June"
- ":Jul:July:Aug:August:Sep:September"
- ":Oct:October:Nov:November:Dec:December");
- }
- const char * _Getfalse() const
- {
- return ("false");
- }
- const char * _Gettrue() const
- {
- return ("true");
- }
- int _Getdateorder() const
- {
- return ::_Getdateorder();
- }
-private:
- _Lockit _Lock;
- string _Days;
- string _Months;
- string _Oldlocname;
- string _Newlocname;
- };
-#pragma warning(pop)
-
-template<class _Elem> inline
- int __cdecl _LStrcoll(const _Elem *_First1, const _Elem *_Last1,
- const _Elem *_First2, const _Elem *_Last2,
- const _Locinfo::_Collvec *)
- {
- for (; _First1 != _Last1 && _First2 != _Last2; ++_First1, ++_First2)
- if (*_First1 < *_First2)
- return (-1);
- else if (*_First2 < *_First1)
- return (+1);
- return (_First2 != _Last2 ? -1 : _First1 != _Last1 ? +1 : 0);
- }
-template<> inline
- int __cdecl _LStrcoll(const char *_First1, const char *_Last1,
- const char *_First2, const char *_Last2,
- const _Locinfo::_Collvec *_Vector)
- {
- return (_Strcoll(_First1, _Last1, _First2, _Last2, _Vector));
- }
-template<> inline
- int __cdecl _LStrcoll(const wchar_t *_First1, const wchar_t *_Last1,
- const wchar_t *_First2, const wchar_t *_Last2,
- const _Locinfo::_Collvec *_Vector)
- {
- return (_Wcscoll(_First1, _Last1, _First2, _Last2, _Vector));
- }
-
-template<class _Elem> inline
- size_t __cdecl _LStrxfrm(_Elem *_First1, _Elem *_Last1,
- const _Elem *_First2, const _Elem *_Last2,
- const _Locinfo::_Collvec *)
- {
- size_t _Count = _Last2 - _First2;
- if (_Count <= (size_t)(_Last1 - _First1))
- ::memcpy_s((_First1), ((_Last1 - _First1)* sizeof(_Elem)), (_First2), (_Count * sizeof (_Elem)));
- return (_Count);
- }
-template<> inline
- size_t __cdecl _LStrxfrm(
- char *_First1,
- char *_Last1,
- const char *_First2, const char *_Last2,
- const _Locinfo::_Collvec *_Vector)
- {
- return (_Strxfrm(_First1, _Last1, _First2, _Last2, _Vector));
- }
-template<> inline
- size_t __cdecl _LStrxfrm(
- wchar_t *_First1,
- wchar_t *_Last1,
- const wchar_t *_First2, const wchar_t *_Last2,
- const _Locinfo::_Collvec *_Vector)
- {
- return (_Wcsxfrm(_First1, _Last1, _First2, _Last2, _Vector));
- }
-}
-#pragma warning(pop)
-#pragma pack(pop)
@@ -129755,130 +124702,28 @@
-#pragma pack(push,8)
-#pragma warning(push,3)
-#pragma warning(disable:4412)
-namespace std {
-
-template<class _Dummy>
- class _Locbase
- {
-public:
- static const int collate = ((1 << (1)) >> 1);
- static const int ctype = ((1 << (2)) >> 1);
- static const int monetary = ((1 << (3)) >> 1);
- static const int numeric = ((1 << (4)) >> 1);
- static const int time = ((1 << (5)) >> 1);
- static const int messages = ((1 << (6)) >> 1);
- static const int all = (((1 << (7)) >> 1) - 1);
- static const int none = 0;
- };
-template<class _Dummy>
- const int _Locbase<_Dummy>::collate;
-template<class _Dummy>
- const int _Locbase<_Dummy>::ctype;
-template<class _Dummy>
- const int _Locbase<_Dummy>::monetary;
-template<class _Dummy>
- const int _Locbase<_Dummy>::numeric;
-template<class _Dummy>
- const int _Locbase<_Dummy>::time;
-template<class _Dummy>
- const int _Locbase<_Dummy>::messages;
-template<class _Dummy>
- const int _Locbase<_Dummy>::all;
-template<class _Dummy>
- const int _Locbase<_Dummy>::none;
-
-class locale;
-template<class _Facet>
- const _Facet& __cdecl use_facet(const locale&);
-#pragma warning(push)
-#pragma warning(disable:4412)
-class locale
- : public _Locbase<int>
- {
-public:
- typedef int category;
-
- class id
- {
- public:
- id(size_t _Val = 0)
- : _Id(_Val)
- {
- }
- operator size_t()
- {
- if (_Id == 0)
- {
- { ::std:: _Lockit _Lock(0);
- if (_Id == 0)
- _Id = ++_Id_cnt;
- }
- }
- return (_Id);
- }
- private:
- id(const id&);
- id& operator=(const id&);
- size_t _Id;
- static int& __cdecl _Id_cnt_func();
- static int _Id_cnt;
- };
- class _Locimp;
-
- class facet
- {
- friend class locale;
- friend class _Locimp;
- public:
- static size_t __cdecl _Getcat(const facet ** = 0)
- {
- return ((size_t)(-1));
- }
- void _Incref()
- {
- { ::std:: _Lockit _Lock(0);
- if (_Refs < (size_t)(-1))
- ++_Refs;
- }
- }
- facet * _Decref()
- {
- { ::std:: _Lockit _Lock(0);
- if (0 < _Refs && _Refs < (size_t)(-1))
- --_Refs;
- return (_Refs == 0 ? this : 0);
- }
- }
- void _Register()
- {
- facet_Register(this);
- }
-
@@ -129905,2314 +124750,60871 @@
- virtual ~facet()
- {
- }
- protected:
- explicit facet(size_t _Initrefs = 0)
- : _Refs(_Initrefs)
- {
- }
- private:
- static void __cdecl facet_Register(facet *);
- facet(const facet&);
- facet& operator=(const facet&);
- size_t _Refs;
- };
-
- class _Locimp
- : public facet
- {
- protected:
- ~_Locimp()
- {
- _Locimp_dtor(this);
- }
- private:
- static void __cdecl _Locimp_dtor(_Locimp *);
- static void __cdecl _Locimp_ctor(_Locimp *,const _Locimp&);
- static void __cdecl _Locimp_Addfac(_Locimp *,facet *, size_t);
- friend class locale;
- _Locimp(bool _Transparent = false)
- : locale::facet(1), _Facetvec(0), _Facetcount(0),
- _Catmask(none), _Xparent(_Transparent), _Name("*")
- { }
-
- _Locimp(const _Locimp& _Right)
- : locale::facet(1), _Facetvec(0), _Facetcount(_Right._Facetcount),
- _Catmask(_Right._Catmask), _Xparent(_Right._Xparent), _Name(_Right._Name)
- {
- _Locimp_ctor(this, _Right);
- }
-
- void _Addfac(facet *_Pfacet, size_t _Id)
- {
- _Locimp_Addfac(this, _Pfacet, _Id);
- }
- static _Locimp *__cdecl _Makeloc(const _Locinfo&,
- category, _Locimp *, const locale *);
- static void __cdecl _Makewloc(const _Locinfo&,
- category, _Locimp *, const locale *);
-
- static void __cdecl _Makeushloc(const _Locinfo&,
- category, _Locimp *, const locale *);
-
- static void __cdecl _Makexloc(const _Locinfo&,
- category, _Locimp *, const locale *);
- facet **_Facetvec;
- size_t _Facetcount;
- category _Catmask;
- bool _Xparent;
- string _Name;
- static _Locimp *& __cdecl _Clocptr_func();
- static _Locimp *_Clocptr;
-private:
- _Locimp& operator=(const _Locimp&);
-
- };
- __declspec(deprecated("This is an obsolete part of the Standard C++ Library Implementation. Do not use it.")) locale& _Addfac(facet *_Fac, size_t _Id,
- size_t _Catmask)
- {
- if (1 < this->_Ptr->_Refs)
- {
- this->_Ptr->_Decref();
- this->_Ptr = new _Locimp(*this->_Ptr);
- }
- this->_Ptr->_Addfac(_Fac, _Id);
- if (_Catmask != 0)
- this->_Ptr->_Name = "*";
- return (*this);
- }
- template<class _Elem,
- class _Traits,
- class _Alloc>
- bool operator()(const basic_string<_Elem, _Traits, _Alloc>& _Left,
- const basic_string<_Elem, _Traits, _Alloc>& _Right) const
- {
- const std::collate<_Elem>& _Coll_fac =
- std::use_facet<std::collate<_Elem> >(*this);
- return (_Coll_fac.compare(_Left.c_str(), _Left.c_str() + _Left.size(),
- _Right.c_str(), _Right.c_str() + _Right.size()) < 0);
- }
- template<class _Facet>
- locale combine(const locale& _Loc) const
- {
- _Facet *_Facptr;
- try {
- _Facptr = (_Facet *)&std::use_facet<_Facet>(_Loc);
- } catch (...) {
- throw runtime_error("locale::combine facet missing");
- }
- _Locimp *_Newimp = new _Locimp(*_Ptr);
- _Newimp->_Addfac(_Facptr, _Facet::id);
- _Newimp->_Catmask = 0;
- _Newimp->_Name = "*";
- return (locale(_Newimp));
- }
- template<class _Facet>
- locale(const locale& _Loc, const _Facet *_Facptr)
- : _Ptr(new _Locimp(*_Loc._Ptr))
- {
- if (_Facptr != 0)
- {
- _Ptr->_Addfac((_Facet *)_Facptr, _Facet::id);
- if (_Facet::_Getcat() != (size_t)(-1))
- _Ptr->_Catmask = 0, _Ptr->_Name = "*";
- }
- }
- locale() throw ()
- : _Ptr(_Init())
- {
- _Getgloballocale()->_Incref();
- }
- locale(_Uninitialized)
- {
- }
- locale(const locale& _Right) throw ()
- : _Ptr(_Right._Ptr)
- {
- _Ptr->_Incref();
- }
- locale(const locale& _Loc, const locale& _Other,
- category _Cat)
- : _Ptr(new _Locimp(*_Loc._Ptr))
- {
- try {
- { _Locinfo _Lobj(_Loc._Ptr->_Catmask, _Loc._Ptr->_Name.c_str());
- _Locimp::_Makeloc(_Lobj._Addcats(_Cat & _Other._Ptr->_Catmask,
- _Other._Ptr->_Name.c_str()), _Cat, _Ptr, &_Other);
- }
- } catch (...) {
- delete (_Ptr->_Decref());
- throw;
- }
- }
- explicit locale(const char *_Locname,
- category _Cat = all)
- : _Ptr(new _Locimp)
- {
- try {
- _Init();
- { _Locinfo _Lobj(_Cat, _Locname);
- if (_Lobj._Getname().compare("*") == 0)
- throw runtime_error("bad locale name");
- _Locimp::_Makeloc(_Lobj, _Cat, _Ptr, 0);
- }
- } catch (...) {
- delete (_Ptr->_Decref());
- throw;
- }
- }
- locale(const locale& _Loc, const char * _Locname,
- category _Cat)
- : _Ptr(new _Locimp(*_Loc._Ptr))
- {
- try {
- { _Locinfo _Lobj(_Loc._Ptr->_Catmask, _Loc._Ptr->_Name.c_str());
- bool _Hadname = _Lobj._Getname().compare("*") != 0;
- _Lobj._Addcats(_Cat, _Locname);
- if (_Hadname && _Lobj._Getname().compare("*") == 0)
- throw runtime_error("bad locale name");
- _Locimp::_Makeloc(_Lobj, _Cat, _Ptr, 0);
- }
- } catch (...) {
- delete (_Ptr->_Decref());
- throw;
- }
- }
- ~locale() throw ()
- {
- if (_Ptr != 0)
- delete (_Ptr->_Decref());
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+namespace boost {
+
+template< typename T > struct has_virtual_destructor : ::boost::integral_constant<bool,__has_virtual_destructor(T)> { };
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+namespace boost {
+namespace detail{
+
+
+template <class T>
+struct is_abstract_imp
+{
+ static const bool value = __is_abstract(T);
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
+
+
+template< typename T > struct is_abstract : ::boost::integral_constant<bool,::boost::detail::is_abstract_imp<T>::value> { };
+
+
+
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+namespace boost {
+
+namespace detail {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+template <typename B, typename D>
+struct is_base_and_derived_impl
+{
+ typedef typename remove_cv<B>::type ncvB;
+ typedef typename remove_cv<D>::type ncvD;
+
+ static const bool value = ((__is_base_of(B,D) && !is_same<B,D>::value) && ! ::boost::is_same<ncvB,ncvD>::value);
+};
+
+}
+
+template< typename Base, typename Derived > struct is_base_and_derived : ::boost::integral_constant<bool,(::boost::detail::is_base_and_derived_impl<Base,Derived>::value)> { };
+
+
+template< typename Base, typename Derived > struct is_base_and_derived< Base&,Derived > : ::boost::integral_constant<bool,false> { };
+template< typename Base, typename Derived > struct is_base_and_derived< Base,Derived& > : ::boost::integral_constant<bool,false> { };
+template< typename Base, typename Derived > struct is_base_and_derived< Base&,Derived& > : ::boost::integral_constant<bool,false> { };
+
+
+
+
+
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+namespace boost {
+
+namespace detail {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+template <typename T>
+struct is_class_impl
+{
+ static const bool value = __is_class(T);
+};
+
+
+}
+
+
+
+
+
+template< typename T > struct is_class : ::boost::integral_constant<bool,::boost::detail::is_class_impl<T>::value> { };
+
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+namespace boost {
+
+ namespace detail{
+ template <class B, class D>
+ struct is_base_of_imp
+ {
+ typedef typename remove_cv<B>::type ncvB;
+ typedef typename remove_cv<D>::type ncvD;
+ static const bool value = (::boost::type_traits::ice_or< (::boost::detail::is_base_and_derived_impl<ncvB,ncvD>::value), (::boost::type_traits::ice_and< ::boost::is_same<ncvB,ncvD>::value, ::boost::is_class<ncvB>::value>::value)>::value);
+ };
+ }
+
+template< typename Base, typename Derived > struct is_base_of : ::boost::integral_constant<bool,(::boost::detail::is_base_of_imp<Base, Derived>::value)> { };
+
+
+template< typename Base, typename Derived > struct is_base_of< Base&,Derived > : ::boost::integral_constant<bool,false> { };
+template< typename Base, typename Derived > struct is_base_of< Base,Derived& > : ::boost::integral_constant<bool,false> { };
+template< typename Base, typename Derived > struct is_base_of< Base&,Derived& > : ::boost::integral_constant<bool,false> { };
+
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+namespace boost {
+
+
+
+
+
+
+
+
+
+
+
+
+
+namespace detail {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+template <typename From, typename To>
+struct is_convertible_basic_impl
+{
+ static ::boost::type_traits::no_type __cdecl _m_check(...);
+ static ::boost::type_traits::yes_type __cdecl _m_check(To);
+ static From _m_from;
+
+#pragma warning(push)
+#pragma warning(disable:4244)
+
+#pragma warning(disable:6334)
+
+
+ static const bool value = sizeof( _m_check(_m_from) ) == sizeof(::boost::type_traits::yes_type);
+
+#pragma warning(pop)
+
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+template <typename From, typename To>
+struct is_convertible_impl
+{
+ typedef typename add_reference<From>::type ref_type;
+ static const bool value = (::boost::type_traits::ice_and< ::boost::type_traits::ice_or< ::boost::detail::is_convertible_basic_impl<ref_type,To>::value, ::boost::is_void<To>::value >::value, ::boost::type_traits::ice_not< ::boost::is_array<To>::value >::value >::value);
+};
+
+
+template <bool trivial1, bool trivial2, bool abstract_target>
+struct is_convertible_impl_select
+{
+ template <class From, class To>
+ struct rebind
+ {
+ typedef is_convertible_impl<From, To> type;
+ };
+};
+
+template <>
+struct is_convertible_impl_select<true, true, false>
+{
+ template <class From, class To>
+ struct rebind
+ {
+ typedef true_type type;
+ };
+};
+
+template <>
+struct is_convertible_impl_select<false, false, true>
+{
+ template <class From, class To>
+ struct rebind
+ {
+ typedef false_type type;
+ };
+};
+
+template <>
+struct is_convertible_impl_select<true, false, true>
+{
+ template <class From, class To>
+ struct rebind
+ {
+ typedef false_type type;
+ };
+};
+
+template <typename From, typename To>
+struct is_convertible_impl_dispatch_base
+{
+
+ typedef is_convertible_impl_select<
+ ::boost::is_arithmetic<From>::value,
+ ::boost::is_arithmetic<To>::value,
+
+ ::boost::is_abstract<To>::value
+
+
+
+ > selector;
+
+
+
+ typedef typename selector::template rebind<From, To> isc_binder;
+ typedef typename isc_binder::type type;
+};
+
+template <typename From, typename To>
+struct is_convertible_impl_dispatch
+ : public is_convertible_impl_dispatch_base<From, To>::type
+{};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ template<> struct is_convertible_impl< void,void > { static const bool value = (true); }; template<> struct is_convertible_impl< void,void const > { static const bool value = (true); }; template<> struct is_convertible_impl< void,void volatile > { static const bool value = (true); }; template<> struct is_convertible_impl< void,void const volatile > { static const bool value = (true); }; template<> struct is_convertible_impl< void const,void > { static const bool value = (true); }; template<> struct is_convertible_impl< void const,void const > { static const bool value = (true); }; template<> struct is_convertible_impl< void const,void volatile > { static const bool value = (true); }; template<> struct is_convertible_impl< void const,void const volatile > { static const bool value = (true); }; template<> struct is_convertible_impl< void volatile,void > { static const bool value = (true); }; template<> struct is_convertible_impl< void volatile,void const > { static const bool value = (true); }; template<>
struct is_convertible_impl< void volatile,void volatile > { static const bool value = (true); }; template<> struct is_convertible_impl< void volatile,void const volatile > { static const bool value = (true); }; template<> struct is_convertible_impl< void const volatile,void > { static const bool value = (true); }; template<> struct is_convertible_impl< void const volatile,void const > { static const bool value = (true); }; template<> struct is_convertible_impl< void const volatile,void volatile > { static const bool value = (true); }; template<> struct is_convertible_impl< void const volatile,void const volatile > { static const bool value = (true); };
+
+
+
+
+
+
+
+
+
+template< typename To > struct is_convertible_impl< void,To > { static const bool value = (false); };
+template< typename From > struct is_convertible_impl< From,void > { static const bool value = (true); };
+
+template< typename To > struct is_convertible_impl< void const,To > { static const bool value = (false); };
+template< typename To > struct is_convertible_impl< void volatile,To > { static const bool value = (false); };
+template< typename To > struct is_convertible_impl< void const volatile,To > { static const bool value = (false); };
+template< typename From > struct is_convertible_impl< From,void const > { static const bool value = (true); };
+template< typename From > struct is_convertible_impl< From,void volatile > { static const bool value = (true); };
+template< typename From > struct is_convertible_impl< From,void const volatile > { static const bool value = (true); };
+
+
+
+}
+
+template< typename From, typename To > struct is_convertible : ::boost::integral_constant<bool,(::boost::detail::is_convertible_impl_dispatch<From,To>::value)> { };
+
+
+
+
+
+
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+
+
+
+
+
+#pragma once
+
+
+
+
+
+extern "C" {
+
+
+
+#pragma pack(push,8)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef union
+ {
+ unsigned short _Word[8];
+ float _Float;
+ double _Double;
+ long double _Long_double;
+ } _Dconst;
+
+
+void __cdecl _Feraise(int);
+
+
+ double __cdecl _Cosh(double, double);
+ short __cdecl _Dtest(double *);
+ short __cdecl _Exp(double *, double, short);
+ double __cdecl _Sinh(double, double);
+extern _Dconst _Denorm, _Hugeval, _Inf,
+ _Nan, _Snan;
+
+
+ float __cdecl _FCosh(float, float);
+ short __cdecl _FDtest(float *);
+ short __cdecl _FExp(float *, float, short);
+ float __cdecl _FSinh(float, float);
+extern _Dconst _FDenorm, _FInf, _FNan, _FSnan;
+
+
+ long double __cdecl _LCosh(long double, long double);
+ short __cdecl _LDtest(long double *);
+ short __cdecl _LExp(long double *, long double, short);
+ long double __cdecl _LSinh(long double, long double);
+extern _Dconst _LDenorm, _LInf, _LNan, _LSnan;
+
+}
+
+
+
+
+#pragma pack(pop)
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma pack(push,8)
+
+
+
+extern "C" {
+
+
+
+
+
+
+
+
+
+struct _exception {
+ int type;
+ char *name;
+ double arg1;
+ double arg2;
+ double retval;
+ } ;
+
+
+
+
+
+
+
+
+
+
+struct _complex {
+ double x,y;
+ } ;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ extern double _HUGE;
+
+
+
+
+
+
+
+
+
+
+
+
+ int __cdecl abs( int _X);
+ long __cdecl labs( long _X);
+
+
+ double __cdecl acos( double _X);
+ double __cdecl asin( double _X);
+ double __cdecl atan( double _X);
+ double __cdecl atan2( double _Y, double _X);
+
+ double __cdecl _copysign ( double _Number, double _Sign);
+ double __cdecl _chgsign ( double _X);
+
+
+ double __cdecl cos( double _X);
+ double __cdecl cosh( double _X);
+ double __cdecl exp( double _X);
+ double __cdecl fabs( double _X);
+ double __cdecl fmod( double _X, double _Y);
+ double __cdecl log( double _X);
+ double __cdecl log10( double _X);
+ double __cdecl pow( double _X, double _Y);
+ double __cdecl sin( double _X);
+ double __cdecl sinh( double _X);
+ double __cdecl tan( double _X);
+ double __cdecl tanh( double _X);
+ double __cdecl sqrt( double _X);
+
+
+ double __cdecl atof( const char *_String);
+ double __cdecl _atof_l( const char *_String, _locale_t _Locale);
+
+
+ double __cdecl _cabs( struct _complex _Complex);
+ double __cdecl ceil( double _X);
+ double __cdecl floor( double _X);
+ double __cdecl frexp( double _X, int * _Y);
+ double __cdecl _hypot( double _X, double _Y);
+ double __cdecl _j0( double _X );
+ double __cdecl _j1( double _X );
+ double __cdecl _jn(int _X, double _Y);
+ double __cdecl ldexp( double _X, int _Y);
+
+
+
+
+
+ int __cdecl _matherr( struct _exception * _Except);
+
+
+ double __cdecl modf( double _X, double * _Y);
+
+ double __cdecl _y0( double _X);
+ double __cdecl _y1( double _X);
+ double __cdecl _yn( int _X, double _Y);
+
+
+
+
+ int __cdecl _set_SSE2_enable( int _Flag);
+ float __cdecl _hypotf( float _X, float _Y);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+inline long double acosl( long double _X)
+ {return (acos((double)_X)); }
+inline long double asinl( long double _X)
+ {return (asin((double)_X)); }
+inline long double atanl( long double _X)
+ {return (atan((double)_X)); }
+inline long double atan2l( long double _X, long double _Y)
+ {return (atan2((double)_X, (double)_Y)); }
+inline long double ceill( long double _X)
+ {return (ceil((double)_X)); }
+inline long double cosl( long double _X)
+ {return (cos((double)_X)); }
+inline long double coshl( long double _X)
+ {return (cosh((double)_X)); }
+inline long double expl( long double _X)
+ {return (exp((double)_X)); }
+inline long double fabsl( long double _X)
+ {return (fabs((double)_X)); }
+inline long double floorl( long double _X)
+ {return (floor((double)_X)); }
+inline long double fmodl( long double _X, long double _Y)
+ {return (fmod((double)_X, (double)_Y)); }
+inline long double frexpl( long double _X, int *_Y)
+ {return (frexp((double)_X, _Y)); }
+inline long double ldexpl( long double _X, int _Y)
+ {return (ldexp((double)_X, _Y)); }
+inline long double logl( long double _X)
+ {return (log((double)_X)); }
+inline long double log10l( long double _X)
+ {return (log10((double)_X)); }
+inline long double modfl( long double _X, long double *_Y)
+ {double _Di, _Df = modf((double)_X, &_Di);
+ *_Y = (long double)_Di;
+ return (_Df); }
+inline long double powl( long double _X, long double _Y)
+ {return (pow((double)_X, (double)_Y)); }
+inline long double sinl( long double _X)
+ {return (sin((double)_X)); }
+inline long double sinhl( long double _X)
+ {return (sinh((double)_X)); }
+inline long double sqrtl( long double _X)
+ {return (sqrt((double)_X)); }
+
+inline long double tanl( long double _X)
+ {return (tan((double)_X)); }
+
+
+
+
+inline long double tanhl( long double _X)
+ {return (tanh((double)_X)); }
+
+inline long double _chgsignl( long double _Number)
+{
+ return _chgsign(static_cast<double>(_Number));
+}
+
+inline long double _copysignl( long double _Number, long double _Sign)
+{
+ return _copysign(static_cast<double>(_Number), static_cast<double>(_Sign));
+}
+
+inline float frexpf( float _X, int *_Y)
+ {return ((float)frexp((double)_X, _Y)); }
+
+
+inline float fabsf( float _X)
+ {return ((float)fabs((double)_X)); }
+inline float ldexpf( float _X, int _Y)
+ {return ((float)ldexp((double)_X, _Y)); }
+
+inline float acosf( float _X)
+ {return ((float)acos((double)_X)); }
+inline float asinf( float _X)
+ {return ((float)asin((double)_X)); }
+inline float atanf( float _X)
+ {return ((float)atan((double)_X)); }
+inline float atan2f( float _X, float _Y)
+ {return ((float)atan2((double)_X, (double)_Y)); }
+inline float ceilf( float _X)
+ {return ((float)ceil((double)_X)); }
+inline float cosf( float _X)
+ {return ((float)cos((double)_X)); }
+inline float coshf( float _X)
+ {return ((float)cosh((double)_X)); }
+inline float expf( float _X)
+ {return ((float)exp((double)_X)); }
+inline float floorf( float _X)
+ {return ((float)floor((double)_X)); }
+inline float fmodf( float _X, float _Y)
+ {return ((float)fmod((double)_X, (double)_Y)); }
+inline float logf( float _X)
+ {return ((float)log((double)_X)); }
+inline float log10f( float _X)
+ {return ((float)log10((double)_X)); }
+inline float modff( float _X, float *_Y)
+ { double _Di, _Df = modf((double)_X, &_Di);
+ *_Y = (float)_Di;
+ return ((float)_Df); }
+inline float powf( float _X, float _Y)
+ {return ((float)pow((double)_X, (double)_Y)); }
+inline float sinf( float _X)
+ {return ((float)sin((double)_X)); }
+inline float sinhf( float _X)
+ {return ((float)sinh((double)_X)); }
+inline float sqrtf( float _X)
+ {return ((float)sqrt((double)_X)); }
+inline float tanf( float _X)
+ {return ((float)tan((double)_X)); }
+inline float tanhf( float _X)
+ {return ((float)tanh((double)_X)); }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ extern double HUGE;
+
+
+
+
+__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: " "_cabs" ". See online help for details.")) double __cdecl cabs( struct _complex _X);
+__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: " "_hypot" ". See online help for details.")) double __cdecl hypot( double _X, double _Y);
+__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: " "_j0" ". See online help for details.")) double __cdecl j0( double _X);
+__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: " "_j1" ". See online help for details.")) double __cdecl j1( double _X);
+__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: " "_jn" ". See online help for details.")) double __cdecl jn( int _X, double _Y);
+__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: " "_y0" ". See online help for details.")) double __cdecl y0( double _X);
+__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: " "_y1" ". See online help for details.")) double __cdecl y1( double _X);
+__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: " "_yn" ". See online help for details.")) double __cdecl yn( int _X, double _Y);
+
+
+
+
+
+
+}
+
+extern "C++" {
+
+template<class _Ty> inline
+ _Ty _Pow_int(_Ty _X, int _Y)
+ {unsigned int _N;
+ if (_Y >= 0)
+ _N = (unsigned int)_Y;
+ else
+ _N = (unsigned int)(-_Y);
+ for (_Ty _Z = _Ty(1); ; _X *= _X)
+ {if ((_N & 1) != 0)
+ _Z *= _X;
+ if ((_N >>= 1) == 0)
+ return (_Y < 0 ? _Ty(1) / _Z : _Z); }}
+
+inline long __cdecl abs( long _X)
+ {return (labs(_X)); }
+inline double __cdecl abs( double _X)
+ {return (fabs(_X)); }
+inline double __cdecl pow( double _X, int _Y)
+ {return (_Pow_int(_X, _Y)); }
+inline float __cdecl abs( float _X)
+ {return (fabsf(_X)); }
+inline float __cdecl acos( float _X)
+ {return (acosf(_X)); }
+inline float __cdecl asin( float _X)
+ {return (asinf(_X)); }
+inline float __cdecl atan( float _X)
+ {return (atanf(_X)); }
+inline float __cdecl atan2( float _Y, float _X)
+ {return (atan2f(_Y, _X)); }
+inline float __cdecl ceil( float _X)
+ {return (ceilf(_X)); }
+inline float __cdecl cos( float _X)
+ {return (cosf(_X)); }
+inline float __cdecl cosh( float _X)
+ {return (coshf(_X)); }
+inline float __cdecl exp( float _X)
+ {return (expf(_X)); }
+inline float __cdecl fabs( float _X)
+ {return (fabsf(_X)); }
+inline float __cdecl floor( float _X)
+ {return (floorf(_X)); }
+inline float __cdecl fmod( float _X, float _Y)
+ {return (fmodf(_X, _Y)); }
+inline float __cdecl frexp( float _X, int * _Y)
+ {return (frexpf(_X, _Y)); }
+inline float __cdecl ldexp( float _X, int _Y)
+ {return (ldexpf(_X, _Y)); }
+inline float __cdecl log( float _X)
+ {return (logf(_X)); }
+inline float __cdecl log10( float _X)
+ {return (log10f(_X)); }
+inline float __cdecl modf( float _X, float * _Y)
+ {return (modff(_X, _Y)); }
+inline float __cdecl pow( float _X, float _Y)
+ {return (powf(_X, _Y)); }
+inline float __cdecl pow( float _X, int _Y)
+ {return (_Pow_int(_X, _Y)); }
+inline float __cdecl sin( float _X)
+ {return (sinf(_X)); }
+inline float __cdecl sinh( float _X)
+ {return (sinhf(_X)); }
+inline float __cdecl sqrt( float _X)
+ {return (sqrtf(_X)); }
+inline float __cdecl tan( float _X)
+ {return (tanf(_X)); }
+inline float __cdecl tanh( float _X)
+ {return (tanhf(_X)); }
+inline long double __cdecl abs( long double _X)
+ {return (fabsl(_X)); }
+inline long double __cdecl acos( long double _X)
+ {return (acosl(_X)); }
+inline long double __cdecl asin( long double _X)
+ {return (asinl(_X)); }
+inline long double __cdecl atan( long double _X)
+ {return (atanl(_X)); }
+inline long double __cdecl atan2( long double _Y, long double _X)
+ {return (atan2l(_Y, _X)); }
+inline long double __cdecl ceil( long double _X)
+ {return (ceill(_X)); }
+inline long double __cdecl cos( long double _X)
+ {return (cosl(_X)); }
+inline long double __cdecl cosh( long double _X)
+ {return (coshl(_X)); }
+inline long double __cdecl exp( long double _X)
+ {return (expl(_X)); }
+inline long double __cdecl fabs( long double _X)
+ {return (fabsl(_X)); }
+inline long double __cdecl floor( long double _X)
+ {return (floorl(_X)); }
+inline long double __cdecl fmod( long double _X, long double _Y)
+ {return (fmodl(_X, _Y)); }
+inline long double __cdecl frexp( long double _X, int * _Y)
+ {return (frexpl(_X, _Y)); }
+inline long double __cdecl ldexp( long double _X, int _Y)
+ {return (ldexpl(_X, _Y)); }
+inline long double __cdecl log( long double _X)
+ {return (logl(_X)); }
+inline long double __cdecl log10( long double _X)
+ {return (log10l(_X)); }
+inline long double __cdecl modf( long double _X, long double * _Y)
+ {return (modfl(_X, _Y)); }
+inline long double __cdecl pow( long double _X, long double _Y)
+ {return (powl(_X, _Y)); }
+inline long double __cdecl pow( long double _X, int _Y)
+ {return (_Pow_int(_X, _Y)); }
+inline long double __cdecl sin( long double _X)
+ {return (sinl(_X)); }
+inline long double __cdecl sinh( long double _X)
+ {return (sinhl(_X)); }
+inline long double __cdecl sqrt( long double _X)
+ {return (sqrtl(_X)); }
+inline long double __cdecl tan( long double _X)
+ {return (tanl(_X)); }
+inline long double __cdecl tanh( long double _X)
+ {return (tanhl(_X)); }
+
+}
+
+
+
+#pragma pack(pop)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+namespace std {
+using ::acosf; using ::asinf;
+using ::atanf; using ::atan2f; using ::ceilf;
+using ::cosf; using ::coshf; using ::expf;
+using ::fabsf; using ::floorf; using ::fmodf;
+using ::frexpf; using ::ldexpf; using ::logf;
+using ::log10f; using ::modff; using ::powf;
+using ::sinf; using ::sinhf; using ::sqrtf;
+using ::tanf; using ::tanhf;
+
+using ::acosl; using ::asinl;
+using ::atanl; using ::atan2l; using ::ceill;
+using ::cosl; using ::coshl; using ::expl;
+using ::fabsl; using ::floorl; using ::fmodl;
+using ::frexpl; using ::ldexpl; using ::logl;
+using ::log10l; using ::modfl; using ::powl;
+using ::sinl; using ::sinhl; using ::sqrtl;
+using ::tanl; using ::tanhl;
+
+using ::abs;
+using ::acos; using ::asin;
+using ::atan; using ::atan2; using ::ceil;
+using ::cos; using ::cosh; using ::exp;
+using ::fabs; using ::floor; using ::fmod;
+using ::frexp; using ::ldexp; using ::log;
+using ::log10; using ::modf; using ::pow;
+using ::sin; using ::sinh; using ::sqrt;
+using ::tan; using ::tanh;
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+
+
+
+
+
+#pragma once
+
+
+
+
+
+#pragma once
+
+
+
+
+
+#pragma once
+
+
+
+
+
+#pragma once
+
+
+
+
+
+#pragma once
+
+
+
+
+
+#pragma once
+
+
+
+
+ #pragma warning(disable: 4514)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma pack(push,8)
+
+
+
+extern "C" {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef int (__cdecl * _onexit_t)(void);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _div_t {
+ int quot;
+ int rem;
+} div_t;
+
+typedef struct _ldiv_t {
+ long quot;
+ long rem;
+} ldiv_t;
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma pack(4)
+typedef struct {
+ unsigned char ld[10];
+} _LDOUBLE;
+#pragma pack()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct {
+ double x;
+} _CRT_DOUBLE;
+
+typedef struct {
+ float f;
+} _CRT_FLOAT;
+
+
+
+
+
+typedef struct {
+
+
+
+ long double x;
+} _LONGDOUBLE;
+
+
+
+#pragma pack(4)
+typedef struct {
+ unsigned char ld12[12];
+} _LDBL12;
+#pragma pack()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ extern int __mb_cur_max;
+
+
+
+
+ int __cdecl ___mb_cur_max_func(void);
+ int __cdecl ___mb_cur_max_l_func(_locale_t);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef void (__cdecl *_purecall_handler)(void);
+
+
+ _purecall_handler __cdecl _set_purecall_handler( _purecall_handler _Handler);
+ _purecall_handler __cdecl _get_purecall_handler();
+
+
+
+extern "C++"
+{
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
+
+
+
+
+typedef void (__cdecl *_invalid_parameter_handler)(const wchar_t *, const wchar_t *, const wchar_t *, unsigned int, uintptr_t);
+
+
+ _invalid_parameter_handler __cdecl _set_invalid_parameter_handler( _invalid_parameter_handler _Handler);
+ _invalid_parameter_handler __cdecl _get_invalid_parameter_handler(void);
+
+
+
+extern "C++"
+{
+
+
+
+
+
+
+
+
+
+
+
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+ unsigned long * __cdecl __doserrno(void);
+
+
+errno_t __cdecl _set_doserrno( unsigned long _Value);
+errno_t __cdecl _get_doserrno( unsigned long * _Value);
+
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "strerror" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) char ** __cdecl __sys_errlist(void);
+
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "strerror" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) int * __cdecl __sys_nerr(void);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ extern int __argc;
+ extern char ** __argv;
+ extern wchar_t ** __wargv;
+
+
+
+
+
+
+
+
+
+
+
+
+
+ extern char ** _environ;
+ extern wchar_t ** _wenviron;
+
+
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "_get_pgmptr" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) extern char * _pgmptr;
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "_get_wpgmptr" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) extern wchar_t * _wpgmptr;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+errno_t __cdecl _get_pgmptr( char ** _Value);
+errno_t __cdecl _get_wpgmptr( wchar_t ** _Value);
+
+
+
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "_get_fmode" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) extern int _fmode;
+
+
+
+
+
+ errno_t __cdecl _set_fmode( int _Mode);
+ errno_t __cdecl _get_fmode( int * _PMode);
+
+
+
+#pragma warning(push)
+#pragma warning(disable:4141)
+
+
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "_get_osplatform" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) __declspec(deprecated("This function or variable has been superceded by newer library or operating system functionality. Consider using" "GetVersionEx" "instead. See online help for details.")) extern unsigned int _osplatform;
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "_get_osver" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) __declspec(deprecated("This function or variable has been superceded by newer library or operating system functionality. Consider using" "GetVersionEx" "instead. See online help for details.")) extern unsigned int _osver;
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "_get_winver" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) __declspec(deprecated("This function or variable has been superceded by newer library or operating system functionality. Consider using" "GetVersionEx" "instead. See online help for details.")) extern unsigned int _winver;
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "_get_winmajor" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) __declspec(deprecated("This function or variable has been superceded by newer library or operating system functionality. Consider using" "GetVersionEx" "instead. See online help for details.")) extern unsigned int _winmajor;
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "_get_winminor" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) __declspec(deprecated("This function or variable has been superceded by newer library or operating system functionality. Consider using" "GetVersionEx" "instead. See online help for details.")) extern unsigned int _winminor;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(pop)
+
+__declspec(deprecated("This function or variable has been superceded by newer library or operating system functionality. Consider using" "GetVersionEx" "instead. See online help for details.")) errno_t __cdecl _get_osplatform( unsigned int * _Value);
+__declspec(deprecated("This function or variable has been superceded by newer library or operating system functionality. Consider using" "GetVersionEx" "instead. See online help for details.")) errno_t __cdecl _get_osver( unsigned int * _Value);
+__declspec(deprecated("This function or variable has been superceded by newer library or operating system functionality. Consider using" "GetVersionEx" "instead. See online help for details.")) errno_t __cdecl _get_winver( unsigned int * _Value);
+__declspec(deprecated("This function or variable has been superceded by newer library or operating system functionality. Consider using" "GetVersionEx" "instead. See online help for details.")) errno_t __cdecl _get_winmajor( unsigned int * _Value);
+__declspec(deprecated("This function or variable has been superceded by newer library or operating system functionality. Consider using" "GetVersionEx" "instead. See online help for details.")) errno_t __cdecl _get_winminor( unsigned int * _Value);
+
+
+
+
+
+
+extern "C++"
+{
+template <typename _CountofType, size_t _SizeOfArray>
+char (*__countof_helper( _CountofType (&_Array)[_SizeOfArray]))[_SizeOfArray];
+
+}
+
+
+
+
+
+
+
+ __declspec(noreturn) void __cdecl exit( int _Code);
+ __declspec(noreturn) void __cdecl _exit( int _Code);
+ void __cdecl abort(void);
+
+
+ unsigned int __cdecl _set_abort_behavior( unsigned int _Flags, unsigned int _Mask);
+
+
+
+
+
+
+
+
+ __int64 __cdecl _abs64(__int64);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ int __cdecl atexit(void (__cdecl *)(void));
+
+
+
+
+
+
+ int __cdecl atoi( const char *_Str);
+ int __cdecl _atoi_l( const char *_Str, _locale_t _Locale);
+ long __cdecl atol( const char *_Str);
+ long __cdecl _atol_l( const char *_Str, _locale_t _Locale);
+
+
+
+ void * __cdecl bsearch_s( const void * _Key, const void * _Base,
+ rsize_t _NumOfElements, rsize_t _SizeOfElements,
+ int (__cdecl * _PtFuncCompare)(void *, const void *, const void *), void * _Context);
+
+ void * __cdecl bsearch( const void * _Key, const void * _Base,
+ size_t _NumOfElements, size_t _SizeOfElements,
+ int (__cdecl * _PtFuncCompare)(const void *, const void *));
+
+
+ void __cdecl qsort_s( void * _Base,
+ rsize_t _NumOfElements, rsize_t _SizeOfElements,
+ int (__cdecl * _PtFuncCompare)(void *, const void *, const void *), void *_Context);
+
+ void __cdecl qsort( void * _Base,
+ size_t _NumOfElements, size_t _SizeOfElements,
+ int (__cdecl * _PtFuncCompare)(const void *, const void *));
+
+ unsigned short __cdecl _byteswap_ushort( unsigned short _Short);
+ unsigned long __cdecl _byteswap_ulong ( unsigned long _Long);
+
+ unsigned __int64 __cdecl _byteswap_uint64(unsigned __int64 _Int64);
+
+ div_t __cdecl div( int _Numerator, int _Denominator);
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "_dupenv_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) char * __cdecl getenv( const char * _VarName);
+
+ errno_t __cdecl getenv_s( size_t * _ReturnSize, char * _DstBuf, rsize_t _DstSize, const char * _VarName);
+
+extern "C++" { template <size_t _Size> inline errno_t __cdecl getenv_s( size_t * _ReturnSize, char (&_Dest)[_Size], const char * _VarName) { return getenv_s(_ReturnSize, _Dest, _Size, _VarName); } }
+ errno_t __cdecl _dupenv_s( char **_PBuffer, size_t * _PBufferSizeInBytes, const char * _VarName);
+ errno_t __cdecl _itoa_s( int _Value, char * _DstBuf, size_t _Size, int _Radix);
+extern "C++" { template <size_t _Size> inline errno_t __cdecl _itoa_s( int _Value, char (&_Dest)[_Size], int _Radix) { return _itoa_s(_Value, _Dest, _Size, _Radix); } }
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "_itoa_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) char * __cdecl _itoa( int _Value, char *_Dest, int _Radix);
+
+ errno_t __cdecl _i64toa_s( __int64 _Val, char * _DstBuf, size_t _Size, int _Radix);
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "_i64toa_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) char * __cdecl _i64toa( __int64 _Val, char * _DstBuf, int _Radix);
+ errno_t __cdecl _ui64toa_s( unsigned __int64 _Val, char * _DstBuf, size_t _Size, int _Radix);
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "_ui64toa_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) char * __cdecl _ui64toa( unsigned __int64 _Val, char * _DstBuf, int _Radix);
+ __int64 __cdecl _atoi64( const char * _String);
+ __int64 __cdecl _atoi64_l( const char * _String, _locale_t _Locale);
+ __int64 __cdecl _strtoi64( const char * _String, char ** _EndPtr, int _Radix);
+ __int64 __cdecl _strtoi64_l( const char * _String, char ** _EndPtr, int _Radix, _locale_t _Locale);
+ unsigned __int64 __cdecl _strtoui64( const char * _String, char ** _EndPtr, int _Radix);
+ unsigned __int64 __cdecl _strtoui64_l( const char * _String, char ** _EndPtr, int _Radix, _locale_t _Locale);
+
+ ldiv_t __cdecl ldiv( long _Numerator, long _Denominator);
+
+extern "C++"
+{
+ inline ldiv_t div( long _A1, long _A2)
+ {
+ return ldiv(_A1, _A2);
+ }
+}
+
+ errno_t __cdecl _ltoa_s( long _Val, char * _DstBuf, size_t _Size, int _Radix);
+extern "C++" { template <size_t _Size> inline errno_t __cdecl _ltoa_s( long _Value, char (&_Dest)[_Size], int _Radix) { return _ltoa_s(_Value, _Dest, _Size, _Radix); } }
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "_ltoa_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) char * __cdecl _ltoa( long _Value, char *_Dest, int _Radix);
+ int __cdecl mblen( const char * _Ch, size_t _MaxCount);
+ int __cdecl _mblen_l( const char * _Ch, size_t _MaxCount, _locale_t _Locale);
+ size_t __cdecl _mbstrlen( const char * _Str);
+ size_t __cdecl _mbstrlen_l( const char *_Str, _locale_t _Locale);
+ size_t __cdecl _mbstrnlen( const char *_Str, size_t _MaxCount);
+ size_t __cdecl _mbstrnlen_l( const char *_Str, size_t _MaxCount, _locale_t _Locale);
+ int __cdecl mbtowc( wchar_t * _DstCh, const char * _SrcCh, size_t _SrcSizeInBytes);
+ int __cdecl _mbtowc_l( wchar_t * _DstCh, const char * _SrcCh, size_t _SrcSizeInBytes, _locale_t _Locale);
+ errno_t __cdecl mbstowcs_s( size_t * _PtNumOfCharConverted, wchar_t * _DstBuf, size_t _SizeInWords, const char * _SrcBuf, size_t _MaxCount );
+extern "C++" { template <size_t _Size> inline errno_t __cdecl mbstowcs_s( size_t * _PtNumOfCharConverted, wchar_t (&_Dest)[_Size], const char * _Source, size_t _MaxCount) { return mbstowcs_s(_PtNumOfCharConverted, _Dest, _Size, _Source, _MaxCount); } }
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "mbstowcs_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) size_t __cdecl mbstowcs( wchar_t *_Dest, const char * _Source, size_t _MaxCount);
+
+ errno_t __cdecl _mbstowcs_s_l( size_t * _PtNumOfCharConverted, wchar_t * _DstBuf, size_t _SizeInWords, const char * _SrcBuf, size_t _MaxCount, _locale_t _Locale);
+extern "C++" { template <size_t _Size> inline errno_t __cdecl _mbstowcs_s_l( size_t * _PtNumOfCharConverted, wchar_t (&_Dest)[_Size], const char * _Source, size_t _MaxCount, _locale_t _Locale) { return _mbstowcs_s_l(_PtNumOfCharConverted, _Dest, _Size, _Source, _MaxCount, _Locale); } }
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "_mbstowcs_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) size_t __cdecl _mbstowcs_l( wchar_t *_Dest, const char * _Source, size_t _MaxCount, _locale_t _Locale);
+
+ int __cdecl rand(void);
+
+
+
+
+ int __cdecl _set_error_mode( int _Mode);
+
+ void __cdecl srand( unsigned int _Seed);
+ double __cdecl strtod( const char * _Str, char ** _EndPtr);
+ double __cdecl _strtod_l( const char * _Str, char ** _EndPtr, _locale_t _Locale);
+ long __cdecl strtol( const char * _Str, char ** _EndPtr, int _Radix );
+ long __cdecl _strtol_l( const char *_Str, char **_EndPtr, int _Radix, _locale_t _Locale);
+ unsigned long __cdecl strtoul( const char * _Str, char ** _EndPtr, int _Radix);
+ unsigned long __cdecl _strtoul_l(const char * _Str, char **_EndPtr, int _Radix, _locale_t _Locale);
+
+
+ int __cdecl system( const char * _Command);
+
+ errno_t __cdecl _ultoa_s( unsigned long _Val, char * _DstBuf, size_t _Size, int _Radix);
+extern "C++" { template <size_t _Size> inline errno_t __cdecl _ultoa_s( unsigned long _Value, char (&_Dest)[_Size], int _Radix) { return _ultoa_s(_Value, _Dest, _Size, _Radix); } }
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "_ultoa_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) char * __cdecl _ultoa( unsigned long _Value, char *_Dest, int _Radix);
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "wctomb_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) int __cdecl wctomb( char * _MbCh, wchar_t _WCh);
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "_wctomb_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) int __cdecl _wctomb_l( char * _MbCh, wchar_t _WCh, _locale_t _Locale);
+
+ errno_t __cdecl wctomb_s( int * _SizeConverted, char * _MbCh, rsize_t _SizeInBytes, wchar_t _WCh);
+
+ errno_t __cdecl _wctomb_s_l( int * _SizeConverted, char * _MbCh, size_t _SizeInBytes, wchar_t _WCh, _locale_t _Locale);
+ errno_t __cdecl wcstombs_s( size_t * _PtNumOfCharConverted, char * _Dst, size_t _DstSizeInBytes, const wchar_t * _Src, size_t _MaxCountInBytes);
+extern "C++" { template <size_t _Size> inline errno_t __cdecl wcstombs_s( size_t * _PtNumOfCharConverted, char (&_Dest)[_Size], const wchar_t * _Source, size_t _MaxCount) { return wcstombs_s(_PtNumOfCharConverted, _Dest, _Size, _Source, _MaxCount); } }
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "wcstombs_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) size_t __cdecl wcstombs( char *_Dest, const wchar_t * _Source, size_t _MaxCount);
+ errno_t __cdecl _wcstombs_s_l( size_t * _PtNumOfCharConverted, char * _Dst, size_t _DstSizeInBytes, const wchar_t * _Src, size_t _MaxCountInBytes, _locale_t _Locale);
+extern "C++" { template <size_t _Size> inline errno_t __cdecl _wcstombs_s_l( size_t * _PtNumOfCharConverted, char (&_Dest)[_Size], const wchar_t * _Source, size_t _MaxCount, _locale_t _Locale) { return _wcstombs_s_l(_PtNumOfCharConverted, _Dest, _Size, _Source, _MaxCount, _Locale); } }
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "_wcstombs_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) size_t __cdecl _wcstombs_l( char *_Dest, const wchar_t * _Source, size_t _MaxCount, _locale_t _Locale);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ char * __cdecl _fullpath( char * _FullPath, const char * _Path, size_t _SizeInBytes);
+
+
+
+
+
+ errno_t __cdecl _ecvt_s( char * _DstBuf, size_t _Size, double _Val, int _NumOfDights, int * _PtDec, int * _PtSign);
+extern "C++" { template <size_t _Size> inline errno_t __cdecl _ecvt_s( char (&_Dest)[_Size], double _Value, int _NumOfDigits, int * _PtDec, int * _PtSign) { return _ecvt_s(_Dest, _Size, _Value, _NumOfDigits, _PtDec, _PtSign); } }
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "_ecvt_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) char * __cdecl _ecvt( double _Val, int _NumOfDigits, int * _PtDec, int * _PtSign);
+ errno_t __cdecl _fcvt_s( char * _DstBuf, size_t _Size, double _Val, int _NumOfDec, int * _PtDec, int * _PtSign);
+extern "C++" { template <size_t _Size> inline errno_t __cdecl _fcvt_s( char (&_Dest)[_Size], double _Value, int _NumOfDigits, int * _PtDec, int * _PtSign) { return _fcvt_s(_Dest, _Size, _Value, _NumOfDigits, _PtDec, _PtSign); } }
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "_fcvt_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) char * __cdecl _fcvt( double _Val, int _NumOfDec, int * _PtDec, int * _PtSign);
+ errno_t __cdecl _gcvt_s( char * _DstBuf, size_t _Size, double _Val, int _NumOfDigits);
+extern "C++" { template <size_t _Size> inline errno_t __cdecl _gcvt_s( char (&_Dest)[_Size], double _Value, int _NumOfDigits) { return _gcvt_s(_Dest, _Size, _Value, _NumOfDigits); } }
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "_gcvt_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) char * __cdecl _gcvt( double _Val, int _NumOfDigits, char * _DstBuf);
+
+ int __cdecl _atodbl( _CRT_DOUBLE * _Result, char * _Str);
+ int __cdecl _atoldbl( _LDOUBLE * _Result, char * _Str);
+ int __cdecl _atoflt( _CRT_FLOAT * _Result, char * _Str);
+ int __cdecl _atodbl_l( _CRT_DOUBLE * _Result, char * _Str, _locale_t _Locale);
+ int __cdecl _atoldbl_l( _LDOUBLE * _Result, char * _Str, _locale_t _Locale);
+ int __cdecl _atoflt_l( _CRT_FLOAT * _Result, char * _Str, _locale_t _Locale);
+ unsigned long __cdecl _lrotl( unsigned long _Val, int _Shift);
+ unsigned long __cdecl _lrotr( unsigned long _Val, int _Shift);
+ errno_t __cdecl _makepath_s( char * _PathResult, size_t _Size, const char * _Drive, const char * _Dir, const char * _Filename,
+ const char * _Ext);
+extern "C++" { template <size_t _Size> inline errno_t __cdecl _makepath_s( char (&_Path)[_Size], const char * _Drive, const char * _Dir, const char * _Filename, const char * _Ext) { return _makepath_s(_Path, _Size, _Drive, _Dir, _Filename, _Ext); } }
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "_makepath_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) void __cdecl _makepath( char *_Path, const char * _Drive, const char * _Dir, const char * _Filename, const char * _Ext);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ _onexit_t __cdecl _onexit( _onexit_t _Func);
+
+
+
+
+
+
+ int __cdecl _putenv( const char * _EnvString);
+ errno_t __cdecl _putenv_s( const char * _Name, const char * _Value);
+ unsigned int __cdecl _rotl( unsigned int _Val, int _Shift);
+
+ unsigned __int64 __cdecl _rotl64( unsigned __int64 _Val, int _Shift);
+
+ unsigned int __cdecl _rotr( unsigned int _Val, int _Shift);
+
+ unsigned __int64 __cdecl _rotr64( unsigned __int64 _Val, int _Shift);
+
+ errno_t __cdecl _searchenv_s( const char * _Filename, const char * _EnvVar, char * _ResultPath, size_t _SizeInBytes);
+extern "C++" { template <size_t _Size> inline errno_t __cdecl _searchenv_s( const char * _Filename, const char * _EnvVar, char (&_ResultPath)[_Size]) { return _searchenv_s(_Filename, _EnvVar, _ResultPath, _Size); } }
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "_searchenv_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) void __cdecl _searchenv( const char * _Filename, const char * _EnvVar, char *_ResultPath);
+
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "_splitpath_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) void __cdecl _splitpath( const char * _FullPath, char * _Drive, char * _Dir, char * _Filename, char * _Ext);
+ errno_t __cdecl _splitpath_s( const char * _FullPath,
+ char * _Drive, size_t _DriveSize,
+ char * _Dir, size_t _DirSize,
+ char * _Filename, size_t _FilenameSize,
+ char * _Ext, size_t _ExtSize);
+extern "C++" { template <size_t _DriveSize, size_t _DirSize, size_t _NameSize, size_t _ExtSize> inline errno_t __cdecl _splitpath_s( const char *_Dest, char (&_Drive)[_DriveSize], char (&_Dir)[_DirSize], char (&_Name)[_NameSize], char (&_Ext)[_ExtSize]) { return _splitpath_s(_Dest, _Drive, _DriveSize, _Dir, _DirSize, _Name, _NameSize, _Ext, _ExtSize); } }
+
+ void __cdecl _swab( char * _Buf1, char * _Buf2, int _SizeInBytes);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(deprecated("This function or variable has been superceded by newer library or operating system functionality. Consider using" "SetErrorMode" "instead. See online help for details.")) void __cdecl _seterrormode( int _Mode);
+__declspec(deprecated("This function or variable has been superceded by newer library or operating system functionality. Consider using" "Beep" "instead. See online help for details.")) void __cdecl _beep( unsigned _Frequency, unsigned _Duration);
+__declspec(deprecated("This function or variable has been superceded by newer library or operating system functionality. Consider using" "Sleep" "instead. See online help for details.")) void __cdecl _sleep( unsigned long _Duration);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable: 4141)
+__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: " "_ecvt" ". See online help for details.")) __declspec(deprecated("This function or variable may be unsafe. Consider using " "_ecvt_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) char * __cdecl ecvt( double _Val, int _NumOfDigits, int * _PtDec, int * _PtSign);
+__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: " "_fcvt" ". See online help for details.")) __declspec(deprecated("This function or variable may be unsafe. Consider using " "_fcvt_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) char * __cdecl fcvt( double _Val, int _NumOfDec, int * _PtDec, int * _PtSign);
+__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: " "_gcvt" ". See online help for details.")) __declspec(deprecated("This function or variable may be unsafe. Consider using " "_fcvt_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) char * __cdecl gcvt( double _Val, int _NumOfDigits, char * _DstBuf);
+__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: " "_itoa" ". See online help for details.")) __declspec(deprecated("This function or variable may be unsafe. Consider using " "_itoa_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) char * __cdecl itoa( int _Val, char * _DstBuf, int _Radix);
+__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: " "_ltoa" ". See online help for details.")) __declspec(deprecated("This function or variable may be unsafe. Consider using " "_ltoa_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) char * __cdecl ltoa( long _Val, char * _DstBuf, int _Radix);
+__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: " "_putenv" ". See online help for details.")) int __cdecl putenv( const char * _EnvString);
+__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: " "_swab" ". See online help for details.")) void __cdecl swab( char * _Buf1, char * _Buf2, int _SizeInBytes);
+__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: " "_ultoa" ". See online help for details.")) __declspec(deprecated("This function or variable may be unsafe. Consider using " "_ultoa_s" " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")) char * __cdecl ultoa( unsigned long _Val, char * _Dstbuf, int _Radix);
+#pragma warning(pop)
+_onexit_t __cdecl onexit( _onexit_t _Func);
+
+
+
+
+
+
+}
+
+
+
+
+#pragma pack(pop)
+
+
+
+
+
+
+
+
+namespace std {
+using ::size_t; using ::div_t; using ::ldiv_t;
+
+using ::abort; using ::abs; using ::atexit;
+using ::atof; using ::atoi; using ::atol;
+using ::bsearch; using ::calloc; using ::div;
+using ::exit; using ::free; using ::getenv;
+using ::labs; using ::ldiv; using ::malloc;
+using ::mblen; using ::mbstowcs; using ::mbtowc;
+using ::qsort; using ::rand; using ::realloc;
+using ::srand; using ::strtod; using ::strtol;
+using ::strtoul; using ::system;
+using ::wcstombs; using ::wctomb;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+
+
+
+
+
+#pragma once
+
+
+
+
+
+#pragma once
+
+
+
+
+
+
+
+#pragma once
+
+
+
+
+
+
+#pragma once
+
+
+
+
+
+#pragma once
+
+
+
+
+
+
+
+
+#pragma once
+
+
+
+
+
+
+
+
+#pragma pack(push,8)
+#pragma warning(push,3)
+
+
+namespace std {
+
+
+struct _Unchecked_iterator_tag
+ {
+ };
+struct _Range_checked_iterator_tag
+ {
+ };
+
+
+struct _Unchanged_checked_iterator_base_type_tag
+ {
+ };
+
+struct _Different_checked_iterator_base_type_tag
+ {
+ };
+
+
+struct _Undefined_inner_type_tag
+ {
+ };
+
+
+struct _Undefined_move_tag
+ {
+ };
+
+struct _Swap_move_tag
+ {
+ };
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+struct _Container_base
+ {
+ };
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+struct _Iterator_base
+ {
+ typedef _Unchecked_iterator_tag _Checked_iterator_category;
+ typedef _Unchanged_checked_iterator_base_type_tag _Checked_iterator_base_type;
+ typedef _Undefined_inner_type_tag _Inner_type;
+
+
+ _Iterator_base()
+ : _Mycont(0)
+ {
+ }
+
+ const _Container_base *_Mycont;
+
+ };
+
+
+
+typedef _Iterator_base _Iterator_base_secure;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+struct input_iterator_tag
+ {
+ };
+
+struct output_iterator_tag
+ {
+ };
+
+struct forward_iterator_tag
+ : public input_iterator_tag
+ {
+ };
+
+struct bidirectional_iterator_tag
+ : public forward_iterator_tag
+ {
+ };
+
+struct random_access_iterator_tag
+ : public bidirectional_iterator_tag
+ {
+ };
+
+struct _Int_iterator_tag
+ {
+ };
+
+struct _Float_iterator_tag
+ {
+ };
+
+
+struct _Nonscalar_ptr_iterator_tag
+ {
+ };
+struct _Scalar_ptr_iterator_tag
+ {
+ };
+
+
+template<class _Category,
+ class _Ty,
+ class _Diff = ptrdiff_t,
+ class _Pointer = _Ty *,
+ class _Reference = _Ty&>
+ struct iterator
+ : public _Iterator_base
+
+ {
+ typedef _Category iterator_category;
+ typedef _Ty value_type;
+ typedef _Diff difference_type;
+ typedef _Diff distance_type;
+ typedef _Pointer pointer;
+ typedef _Reference reference;
+ };
+
+template<class _Category,
+ class _Ty,
+ class _Diff = ptrdiff_t,
+ class _Pointer = _Ty *,
+ class _Reference = _Ty&,
+ class _Base_class = _Iterator_base>
+ struct _Iterator_with_base
+ : public _Base_class
+
+ {
+ typedef _Category iterator_category;
+ typedef _Ty value_type;
+ typedef _Diff difference_type;
+ typedef _Diff distance_type;
+ typedef _Pointer pointer;
+ typedef _Reference reference;
+ };
+
+template<class _Ty,
+ class _Diff,
+ class _Pointer,
+ class _Reference>
+ struct _Bidit
+ : public _Iterator_base
+
+ {
+ typedef bidirectional_iterator_tag iterator_category;
+ typedef _Ty value_type;
+ typedef _Diff difference_type;
+ typedef _Diff distance_type;
+ typedef _Pointer pointer;
+ typedef _Reference reference;
+ };
+
+template<class _Ty,
+ class _Diff,
+ class _Pointer,
+ class _Reference>
+ struct _Ranit
+ : public _Iterator_base
+
+ {
+ typedef random_access_iterator_tag iterator_category;
+ typedef _Ty value_type;
+ typedef _Diff difference_type;
+ typedef _Diff distance_type;
+ typedef _Pointer pointer;
+ typedef _Reference reference;
+ };
+
+template<class _Ty,
+ class _Diff,
+ class _Pointer,
+ class _Reference,
+ class _Base_class>
+ struct _Ranit_base
+ : public _Base_class
+
+ {
+ typedef random_access_iterator_tag iterator_category;
+ typedef _Ty value_type;
+ typedef _Diff difference_type;
+ typedef _Diff distance_type;
+ typedef _Pointer pointer;
+ typedef _Reference reference;
+ };
+
+struct _Outit
+ : public iterator<output_iterator_tag, void, void,
+ void, void>
+ {
+ };
+
+template <class _Base_class>
+struct _Outit_with_base
+ : public _Iterator_with_base<output_iterator_tag, void, void,
+ void, void, _Base_class>
+ {
+ };
+
+
+template<class _Iter>
+ struct iterator_traits
+ {
+ typedef typename _Iter::iterator_category iterator_category;
+ typedef typename _Iter::value_type value_type;
+ typedef typename _Iter::difference_type difference_type;
+ typedef difference_type distance_type;
+ typedef typename _Iter::pointer pointer;
+ typedef typename _Iter::reference reference;
+ };
+
+template<class _Ty>
+ struct iterator_traits<_Ty *>
+ {
+ typedef random_access_iterator_tag iterator_category;
+ typedef _Ty value_type;
+ typedef ptrdiff_t difference_type;
+ typedef ptrdiff_t distance_type;
+ typedef _Ty *pointer;
+ typedef _Ty& reference;
+ };
+
+template<class _Ty>
+ struct iterator_traits<const _Ty *>
+ {
+ typedef random_access_iterator_tag iterator_category;
+ typedef _Ty value_type;
+ typedef ptrdiff_t difference_type;
+ typedef ptrdiff_t distance_type;
+ typedef const _Ty *pointer;
+ typedef const _Ty& reference;
+ };
+
+template<> struct iterator_traits<_Bool>
+ {
+ typedef _Int_iterator_tag iterator_category;
+ typedef _Bool value_type;
+ typedef _Bool difference_type;
+ typedef _Bool distance_type;
+ typedef _Bool * pointer;
+ typedef _Bool& reference;
+ };
+
+template<> struct iterator_traits<char>
+ {
+ typedef _Int_iterator_tag iterator_category;
+ typedef char value_type;
+ typedef char difference_type;
+ typedef char distance_type;
+ typedef char * pointer;
+ typedef char& reference;
+ };
+
+template<> struct iterator_traits<signed char>
+ {
+ typedef _Int_iterator_tag iterator_category;
+ typedef signed char value_type;
+ typedef signed char difference_type;
+ typedef signed char distance_type;
+ typedef signed char * pointer;
+ typedef signed char& reference;
+ };
+
+template<> struct iterator_traits<unsigned char>
+ {
+ typedef _Int_iterator_tag iterator_category;
+ typedef unsigned char value_type;
+ typedef unsigned char difference_type;
+ typedef unsigned char distance_type;
+ typedef unsigned char * pointer;
+ typedef unsigned char& reference;
+ };
+
+
+template<> struct iterator_traits<wchar_t>
+ {
+ typedef _Int_iterator_tag iterator_category;
+ typedef wchar_t value_type;
+ typedef wchar_t difference_type;
+ typedef wchar_t distance_type;
+ typedef wchar_t * pointer;
+ typedef wchar_t& reference;
+ };
+
+
+template<> struct iterator_traits<short>
+ {
+ typedef _Int_iterator_tag iterator_category;
+ typedef short value_type;
+ typedef short difference_type;
+ typedef short distance_type;
+ typedef short * pointer;
+ typedef short& reference;
+ };
+
+template<> struct iterator_traits<unsigned short>
+ {
+ typedef _Int_iterator_tag iterator_category;
+ typedef unsigned short value_type;
+ typedef unsigned short difference_type;
+ typedef unsigned short distance_type;
+ typedef unsigned short * pointer;
+ typedef unsigned short& reference;
+ };
+
+template<> struct iterator_traits<int>
+ {
+ typedef _Int_iterator_tag iterator_category;
+ typedef int value_type;
+ typedef int difference_type;
+ typedef int distance_type;
+ typedef int * pointer;
+ typedef int& reference;
+ };
+
+template<> struct iterator_traits<unsigned int>
+ {
+ typedef _Int_iterator_tag iterator_category;
+ typedef unsigned int value_type;
+ typedef unsigned int difference_type;
+ typedef unsigned int distance_type;
+ typedef unsigned int * pointer;
+ typedef unsigned int& reference;
+ };
+
+template<> struct iterator_traits<long>
+ {
+ typedef _Int_iterator_tag iterator_category;
+ typedef long value_type;
+ typedef long difference_type;
+ typedef long distance_type;
+ typedef long * pointer;
+ typedef long& reference;
+ };
+
+template<> struct iterator_traits<unsigned long>
+ {
+ typedef _Int_iterator_tag iterator_category;
+ typedef unsigned long value_type;
+ typedef unsigned long difference_type;
+ typedef unsigned long distance_type;
+ typedef unsigned long * pointer;
+ typedef unsigned long& reference;
+ };
+
+template<> struct iterator_traits<double>
+ {
+ typedef _Float_iterator_tag iterator_category;
+ typedef double value_type;
+ typedef double difference_type;
+ typedef double distance_type;
+ typedef double * pointer;
+ typedef double& reference;
+ };
+
+template<> struct iterator_traits<float>
+ {
+ typedef _Float_iterator_tag iterator_category;
+ typedef float value_type;
+ typedef float difference_type;
+ typedef float distance_type;
+ typedef float * pointer;
+ typedef float& reference;
+ };
+
+
+template<> struct iterator_traits<__int64>
+ {
+ typedef _Int_iterator_tag iterator_category;
+ typedef __int64 value_type;
+ typedef __int64 difference_type;
+ typedef __int64 distance_type;
+ typedef __int64 * pointer;
+ typedef __int64& reference;
+ };
+
+template<> struct iterator_traits<unsigned __int64>
+ {
+ typedef _Int_iterator_tag iterator_category;
+ typedef unsigned __int64 value_type;
+ typedef unsigned __int64 difference_type;
+ typedef unsigned __int64 distance_type;
+ typedef unsigned __int64 * pointer;
+ typedef unsigned __int64& reference;
+ };
+
+
+
+template<class _Iter> inline
+ typename iterator_traits<_Iter>::iterator_category
+ __cdecl _Iter_cat(const _Iter&)
+ {
+ typename iterator_traits<_Iter>::iterator_category _Cat;
+ return (_Cat);
+ }
+
+
+
+
+template<class _Cat1, class _Cat2>
+ class _Iter_random_helper
+ {
+ public:
+ typedef forward_iterator_tag _Iter_random_cat;
+ };
+
+template<>
+ class _Iter_random_helper<random_access_iterator_tag, random_access_iterator_tag>
+ {
+ public:
+ typedef random_access_iterator_tag _Iter_random_cat;
+ };
+
+template<class _Cat1, class _Cat2, class _Cat3>
+ class _Iter_random_helper3
+ {
+ public:
+ typedef forward_iterator_tag _Iter_random_cat;
+ };
+
+template<>
+ class _Iter_random_helper3<random_access_iterator_tag, random_access_iterator_tag, random_access_iterator_tag>
+ {
+ public:
+ typedef random_access_iterator_tag _Iter_random_cat;
+ };
+
+template<class _Iter1, class _Iter2> inline
+ typename _Iter_random_helper<
+ typename iterator_traits<_Iter1>::iterator_category,
+ typename iterator_traits<_Iter2>::iterator_category>::_Iter_random_cat
+ __cdecl _Iter_random(const _Iter1&, const _Iter2&)
+ {
+ typename _Iter_random_helper<
+ iterator_traits<_Iter1>::iterator_category,
+ iterator_traits<_Iter2>::iterator_category>::_Iter_random_cat _Cat;
+ return (_Cat);
+ }
+
+template<class _Iter1, class _Iter2, class _Iter3> inline
+ typename _Iter_random_helper3<
+ typename iterator_traits<_Iter1>::iterator_category,
+ typename iterator_traits<_Iter2>::iterator_category,
+ typename iterator_traits<_Iter3>::iterator_category>::_Iter_random_cat
+ __cdecl _Iter_random(const _Iter1&, const _Iter2&, const _Iter3&)
+ {
+ typename _Iter_random_helper3<
+ iterator_traits<_Iter1>::iterator_category,
+ iterator_traits<_Iter2>::iterator_category,
+ iterator_traits<_Iter3>::iterator_category>::_Iter_random_cat _Cat;
+ return (_Cat);
+ }
+
+
+
+ template <bool _Cond, class _Ty1, class _Ty2>
+ class _If
+ {
+ public:
+ typedef _Ty2 _Result;
+ };
+
+ template <class _Ty1, class _Ty2>
+ class _If<true, _Ty1, _Ty2>
+ {
+ public:
+ typedef _Ty1 _Result;
+ };
+
+
+ template <bool _Secure_validation>
+ class _Secure_validation_helper
+ {
+ public:
+ typedef _Unchecked_iterator_tag _Checked_iterator_category;
+ };
+
+ template <>
+ class _Secure_validation_helper<true>
+ {
+ public:
+ typedef _Range_checked_iterator_tag _Checked_iterator_category;
+ };
+
+
+
+ template <class _Iter, bool _Inherits_from_iterator_base>
+ class _Checked_iterator_category_helper
+ {
+ public:
+ typedef _Unchecked_iterator_tag _Checked_cat;
+ };
+
+ template <class _Iter>
+ class _Checked_iterator_category_helper<_Iter, true>
+ {
+ public:
+ typedef typename _Iter::_Checked_iterator_category _Checked_cat;
+ };
+
+ template <class _Iter>
+ class _Checked_iterator_category
+ {
+ public:
+ typedef typename _Checked_iterator_category_helper<_Iter, __is_base_of(_Iterator_base, _Iter)>::_Checked_cat _Checked_cat;
+ };
+
+ template<class _Iter>
+ inline
+ typename _Checked_iterator_category<_Iter>::_Checked_cat _Checked_cat(const _Iter&)
+ {
+ typename _Checked_iterator_category<_Iter>::_Checked_cat _Cat;
+ return (_Cat);
+ }
+
+
+ template <class _Iter, bool _Inherits_from_iterator_base>
+ class _Checked_iterator_base_helper2
+ {
+ public:
+ typedef _Unchanged_checked_iterator_base_type_tag _Checked_iterator_base_type;
+ };
+
+ template <class _Iter>
+ class _Checked_iterator_base_helper2<_Iter, true>
+ {
+ public:
+ typedef typename _Iter::_Checked_iterator_base_type _Checked_iterator_base_type;
+ };
+
+ template <class _Iter, class _Base_type>
+ class _Checked_iterator_base_helper1
+ {
+ public:
+ typedef _Different_checked_iterator_base_type_tag _Base_type_tag;
+ typedef _Base_type _Checked_iterator_base_type;
+ };
+
+ template <class _Iter>
+ class _Checked_iterator_base_helper1<_Iter, _Unchanged_checked_iterator_base_type_tag>
+ {
+ public:
+ typedef _Unchanged_checked_iterator_base_type_tag _Base_type_tag;
+ typedef _Iter _Checked_iterator_base_type;
+ };
+
+ template <class _Iter>
+ class _Checked_iterator_base_helper
+ {
+ public:
+ typedef _Checked_iterator_base_helper2<_Iter, __is_base_of(_Iterator_base, _Iter)> _Base_helper2;
+ typedef _Checked_iterator_base_helper1<_Iter, typename _Base_helper2::_Checked_iterator_base_type > _Base_helper1;
+
+ typedef typename _Base_helper1::_Base_type_tag _Checked_iterator_base_type_tag;
+ typedef typename _Base_helper1::_Checked_iterator_base_type _Checked_iterator_base_type;
+ };
+
+ template<class _Iter, class _Base_tag>
+ inline
+ typename _Checked_iterator_base_helper<_Iter>::_Checked_iterator_base_type
+ __cdecl _Checked_base(const _Iter &_It, _Base_tag)
+ {
+ return _It._Checked_iterator_base();
+ }
+
+ template<class _Iter>
+ inline
+ typename _Checked_iterator_base_helper<_Iter>::_Checked_iterator_base_type
+ __cdecl _Checked_base(const _Iter &_It, _Unchanged_checked_iterator_base_type_tag)
+ {
+ return _It;
+ }
+
+ template<class _Iter, class _Base_tag>
+ inline
+ typename _Checked_iterator_base_helper<_Iter>::_Checked_iterator_base_type
+ __cdecl _Checked_base(_Iter &_It, _Base_tag)
+ {
+ return _It._Checked_iterator_base();
+ }
+
+ template<class _Iter>
+ inline
+ typename _Checked_iterator_base_helper<_Iter>::_Checked_iterator_base_type
+ __cdecl _Checked_base(_Iter &_It, _Unchanged_checked_iterator_base_type_tag)
+ {
+ return _It;
+ }
+
+ template<class _Iter>
+ inline
+ typename _Checked_iterator_base_helper<_Iter>::_Checked_iterator_base_type
+ __cdecl _Checked_base(const _Iter &_It)
+ {
+ typename _Checked_iterator_base_helper<_Iter>::_Checked_iterator_base_type_tag _Base_tag;
+ return _Checked_base(_It, _Base_tag);
+ }
+
+ template<class _Iter>
+ inline
+ typename _Checked_iterator_base_helper<_Iter>::_Checked_iterator_base_type
+ __cdecl _Checked_base(_Iter &_It)
+ {
+ typename _Checked_iterator_base_helper<_Iter>::_Checked_iterator_base_type_tag _Base_tag;
+ return _Checked_base(_It, _Base_tag);
+ }
+
+
+
+ template<class _DstIter, class _BaseIter>
+ inline
+ void __cdecl _Checked_assign_from_base(_DstIter &_Dest, const _BaseIter &_Src)
+ {
+ _Dest._Checked_iterator_assign_from_base(_Src);
+ }
+
+ template<class _Iter>
+ inline
+ void __cdecl _Checked_assign_from_base(_Iter &_Dest, const _Iter &_Src)
+ {
+ _Dest = _Src;
+ }
+
+
+
+
+
+
+
+ template <class _Value>
+ class _Move_operation_category
+ {
+ public:
+ typedef _Undefined_move_tag _Move_cat;
+ };
+
+ template<class _Iter>
+ inline
+ typename _Move_operation_category<typename iterator_traits<_Iter>::value_type>::_Move_cat _Move_cat(const _Iter&)
+ {
+ typename _Move_operation_category<typename iterator_traits<_Iter>::value_type>::_Move_cat _Cat;
+ return (_Cat);
+ }
+
+
+template<class _T1, class _T2, class _Checked_Cat1, class _Checked_Cat2>
+struct _Ptr_cat_with_checked_cat_helper
+ {
+ typedef _Nonscalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+template<class _T1, class _T2>
+struct _Ptr_cat_helper
+ {
+ typedef typename _Ptr_cat_with_checked_cat_helper<_T1, _T2,
+ typename _Checked_iterator_category<_T1>::_Checked_cat,
+ typename _Checked_iterator_category<_T2>::_Checked_cat>::_Ptr_cat _Ptr_cat;
+ };
+
+template<class _T1, class _T2, class _Checked_Cat1>
+struct _Ptr_cat_with_checked_cat_helper<_T1, _T2, _Checked_Cat1, _Range_checked_iterator_tag>
+ {
+ typedef typename _Ptr_cat_helper<_T1, typename _T2::_Inner_type>::_Ptr_cat _Ptr_cat;
+ };
+
+template<class _T1, class _T2, class _Checked_Cat2>
+struct _Ptr_cat_with_checked_cat_helper<_T1, _T2, _Range_checked_iterator_tag, _Checked_Cat2>
+ {
+ typedef typename _Ptr_cat_helper<typename _T1::_Inner_type, _T2>::_Ptr_cat _Ptr_cat;
+ };
+
+template<class _T1, class _T2>
+struct _Ptr_cat_with_checked_cat_helper<_T1, _T2, _Range_checked_iterator_tag, _Range_checked_iterator_tag>
+ {
+ typedef typename _Ptr_cat_helper<typename _T1::_Inner_type, typename _T2::_Inner_type>::_Ptr_cat _Ptr_cat;
+ };
+
+template<class _T1>
+struct _Ptr_cat_helper<_T1, _Undefined_inner_type_tag>
+ {
+ typedef _Nonscalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+template<class _T2>
+struct _Ptr_cat_helper<_Undefined_inner_type_tag, _T2>
+ {
+ typedef _Nonscalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+template<>
+struct _Ptr_cat_helper<_Undefined_inner_type_tag, _Undefined_inner_type_tag>
+ {
+ typedef _Nonscalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+
+template<>
+struct _Ptr_cat_helper<_Bool *, _Bool *>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+template<>
+struct _Ptr_cat_helper<const _Bool *, _Bool *>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+template<>
+struct _Ptr_cat_helper<char *, char *>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+template<>
+struct _Ptr_cat_helper<const char *, char *>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+template<>
+struct _Ptr_cat_helper<signed char *, signed char *>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+template<>
+struct _Ptr_cat_helper<const signed char *, signed char *>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+template<>
+struct _Ptr_cat_helper<unsigned char *, unsigned char *>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+template<>
+struct _Ptr_cat_helper<const unsigned char *, unsigned char *>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+
+
+template<>
+struct _Ptr_cat_helper<wchar_t *, wchar_t *>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+template<>
+struct _Ptr_cat_helper<const wchar_t *, wchar_t *>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+
+template<>
+struct _Ptr_cat_helper<short *, short *>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+template<>
+struct _Ptr_cat_helper<const short *, short *>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+template<>
+struct _Ptr_cat_helper<unsigned short *, unsigned short *>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+template<>
+struct _Ptr_cat_helper<const unsigned short *, unsigned short *>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+template<>
+struct _Ptr_cat_helper<int *, int *>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+template<>
+struct _Ptr_cat_helper<const int *, int *>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+template<>
+struct _Ptr_cat_helper<unsigned int *, unsigned int *>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+template<>
+struct _Ptr_cat_helper<const unsigned int *, unsigned int *>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+template<>
+struct _Ptr_cat_helper<long *, long *>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+template<>
+struct _Ptr_cat_helper<const long *, long *>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+template<>
+struct _Ptr_cat_helper<unsigned long *, unsigned long *>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+template<>
+struct _Ptr_cat_helper<const unsigned long *, unsigned long *>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+template<>
+struct _Ptr_cat_helper<float *, float *>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+template<>
+struct _Ptr_cat_helper<const float *, float *>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+template<>
+struct _Ptr_cat_helper<double *, double *>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+template<>
+struct _Ptr_cat_helper<const double *, double *>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+template<>
+struct _Ptr_cat_helper<long double *, long double *>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+template<>
+struct _Ptr_cat_helper<const long double *, long double *>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+
+
+template<>
+struct _Ptr_cat_helper<__int64 *, __int64 *>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+template<>
+struct _Ptr_cat_helper<const __int64 *, __int64 *>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+template<>
+struct _Ptr_cat_helper<unsigned __int64 *, unsigned __int64 *>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+template<>
+struct _Ptr_cat_helper<const unsigned __int64 *, unsigned __int64 *>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+
+
+template<class _Ty>
+struct _Ptr_cat_helper<_Ty **, _Ty **>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+template<class _Ty>
+struct _Ptr_cat_helper<_Ty **, const _Ty **>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+template<class _Ty>
+struct _Ptr_cat_helper<_Ty *const *, _Ty **>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+template<class _Ty>
+struct _Ptr_cat_helper<_Ty *const *, const _Ty **>
+ {
+ typedef _Scalar_ptr_iterator_tag _Ptr_cat;
+ };
+
+
+template<class _T1, class _T2> inline
+typename _Ptr_cat_helper<_T1, _T2>::_Ptr_cat __cdecl _Ptr_cat(_T1&, _T2&)
+ {
+ typename _Ptr_cat_helper<_T1, _T2>::_Ptr_cat _Cat;
+ return (_Cat);
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+template<class _Iter> inline
+ typename iterator_traits<_Iter>::value_type *__cdecl _Val_type(_Iter)
+ {
+ return (0);
+ }
+
+
+template<class _InIt,
+ class _Diff> inline
+ void __cdecl advance(_InIt& _Where, _Diff _Off)
+ {
+ _Advance(_Where, _Off, _Iter_cat(_Where));
+ }
+
+template<class _InIt,
+ class _Diff> inline
+ void __cdecl _Advance(_InIt& _Where, _Diff _Off, input_iterator_tag)
+ {
+
+
+
+
+
+
+ for (; 0 < _Off; --_Off)
+ ++_Where;
+ }
+
+template<class _FI,
+ class _Diff> inline
+ void __cdecl _Advance(_FI& _Where, _Diff _Off, forward_iterator_tag)
+ {
+
+
+
+
+
+
+ for (; 0 < _Off; --_Off)
+ ++_Where;
+ }
+
+#pragma warning(push)
+#pragma warning(disable: 6295)
+template<class _BI,
+ class _Diff> inline
+ void __cdecl _Advance(_BI& _Where, _Diff _Off, bidirectional_iterator_tag)
+ {
+ for (; 0 < _Off; --_Off)
+ ++_Where;
+ for (; _Off < 0; ++_Off)
+ --_Where;
+ }
+#pragma warning(pop)
+
+template<class _RI,
+ class _Diff> inline
+ void __cdecl _Advance(_RI& _Where, _Diff _Off, random_access_iterator_tag)
+ {
+ _Where += _Off;
+ }
+
+
+
+template<class _Iter> inline
+ typename iterator_traits<_Iter>::difference_type
+ * __cdecl _Dist_type(_Iter)
+ {
+ return (0);
+ }
+
+
+template<class _InIt,
+ class _Diff> inline
+ void __cdecl _Distance2(_InIt _First, _InIt _Last, _Diff& _Off,
+ input_iterator_tag)
+ {
+ for (; _First != _Last; ++_First)
+ ++_Off;
+ }
+
+template<class _FwdIt,
+ class _Diff> inline
+ void __cdecl _Distance2(_FwdIt _First, _FwdIt _Last, _Diff& _Off,
+ forward_iterator_tag)
+ {
+ for (; _First != _Last; ++_First)
+ ++_Off;
+ }
+
+template<class _BidIt,
+ class _Diff> inline
+ void __cdecl _Distance2(_BidIt _First, _BidIt _Last, _Diff& _Off,
+ bidirectional_iterator_tag)
+ {
+ for (; _First != _Last; ++_First)
+ ++_Off;
+ }
+
+template<class _RanIt,
+ class _Diff> inline
+ void __cdecl _Distance2(_RanIt _First, _RanIt _Last, _Diff& _Off,
+ random_access_iterator_tag)
+ {
+
+
+
+
+
+
+
+
+
+ _Off += _Last - _First;
+ }
+
+template<class _InIt> inline
+ typename iterator_traits<_InIt>::difference_type
+ __cdecl distance(_InIt _First, _InIt _Last)
+ {
+ typename iterator_traits<_InIt>::difference_type _Off = 0;
+ _Distance2(_First, _Last, _Off, _Iter_cat(_First));
+ return (_Off);
+ }
+
+
+template<class _InIt,
+ class _Diff> inline
+ void __cdecl _Distance(_InIt _First, _InIt _Last, _Diff& _Off)
+ {
+ _Distance2(_First, _Last, _Off, _Iter_cat(_First));
+ }
+
+
+template<class _RanIt>
+ class reverse_iterator
+ : public _Iterator_base_secure
+ {
+public:
+ typedef reverse_iterator<_RanIt> _Myt;
+ typedef typename iterator_traits<_RanIt>::iterator_category iterator_category;
+ typedef typename iterator_traits<_RanIt>::value_type value_type;
+ typedef typename iterator_traits<_RanIt>::difference_type difference_type;
+ typedef typename iterator_traits<_RanIt>::difference_type distance_type;
+ typedef typename iterator_traits<_RanIt>::pointer pointer;
+ typedef typename iterator_traits<_RanIt>::reference reference;
+ typedef _RanIt iterator_type;
+
+ reverse_iterator()
+ {
+ }
+
+ explicit reverse_iterator(_RanIt _Right)
+ : current(_Right)
+ {
+ }
+
+ template<class _Other>
+ reverse_iterator(const reverse_iterator<_Other>& _Right)
+ : current(_Right.base())
+ {
+ }
+
+ _RanIt base() const
+ {
+ return (current);
+ }
+
+
+ typedef typename ::std:: _Checked_iterator_category<_RanIt>::_Checked_cat _Checked_iterator_category;
+ typedef reverse_iterator<typename _Checked_iterator_base_helper<_RanIt>::_Checked_iterator_base_type> _Checked_iterator_base_type;
+
+ _Checked_iterator_base_type _Checked_iterator_base() const
+ {
+ typename _Checked_iterator_base_type _Base(::std:: _Checked_base(current));
+ return _Base;
+ }
+
+ void _Checked_iterator_assign_from_base(_Checked_iterator_base_type _Base)
+ {
+ ::std:: _Checked_assign_from_base(current, _Base.base());
+ }
+
+
+ reference operator*() const
+ {
+ _RanIt _Tmp = current;
+ return (*--_Tmp);
+ }
+
+ pointer operator->() const
+ {
+ return (&**this);
+ }
+
+ _Myt& operator++()
+ {
+ --current;
+ return (*this);
+ }
+
+ _Myt operator++(int)
+ {
+ _Myt _Tmp = *this;
+ --current;
+ return (_Tmp);
+ }
+
+ _Myt& operator--()
+ {
+ ++current;
+ return (*this);
+ }
+
+ _Myt operator--(int)
+ {
+ _Myt _Tmp = *this;
+ ++current;
+ return (_Tmp);
+ }
+
+ template<class _Other>
+ bool _Equal(const reverse_iterator<_Other>& _Right) const
+ {
+ return (current == _Right.base());
+ }
+
+
+
+ _Myt& operator+=(difference_type _Off)
+ {
+ current -= _Off;
+ return (*this);
+ }
+
+ _Myt operator+(difference_type _Off) const
+ {
+ return (_Myt(current - _Off));
+ }
+
+ _Myt& operator-=(difference_type _Off)
+ {
+ current += _Off;
+ return (*this);
+ }
+
+ _Myt operator-(difference_type _Off) const
+ {
+ return (_Myt(current + _Off));
+ }
+
+ reference operator[](difference_type _Off) const
+ {
+ return (*(*this + _Off));
+ }
+
+ template<class _Other>
+ bool _Less(const reverse_iterator<_Other>& _Right) const
+ {
+ return (_Right.base() < current);
+ }
+
+ template<class _Other>
+ difference_type _Minus(const reverse_iterator<_Other>& _Right) const
+ {
+ return (_Right.base() - current);
+ }
+
+protected:
+ _RanIt current;
+ };
+
+
+template<class _RanIt,
+ class _Diff> inline
+ reverse_iterator<_RanIt> __cdecl operator+(_Diff _Off,
+ const reverse_iterator<_RanIt>& _Right)
+ {
+ return (_Right + _Off);
+ }
+
+template<class _RanIt1,
+ class _RanIt2> inline
+ typename reverse_iterator<_RanIt1>::difference_type
+ __cdecl operator-(const reverse_iterator<_RanIt1>& _Left,
+ const reverse_iterator<_RanIt2>& _Right)
+ {
+ return (_Left._Minus(_Right));
+ }
+
+template<class _RanIt1,
+ class _RanIt2> inline
+ bool __cdecl operator==(const reverse_iterator<_RanIt1>& _Left,
+ const reverse_iterator<_RanIt2>& _Right)
+ {
+ return (_Left._Equal(_Right));
+ }
+
+template<class _RanIt1,
+ class _RanIt2> inline
+ bool __cdecl operator!=(const reverse_iterator<_RanIt1>& _Left,
+ const reverse_iterator<_RanIt2>& _Right)
+ {
+ return (!(_Left == _Right));
+ }
+
+template<class _RanIt1,
+ class _RanIt2> inline
+ bool __cdecl operator<(const reverse_iterator<_RanIt1>& _Left,
+ const reverse_iterator<_RanIt2>& _Right)
+ {
+ return (_Left._Less(_Right));
+ }
+
+template<class _RanIt1,
+ class _RanIt2> inline
+ bool __cdecl operator>(const reverse_iterator<_RanIt1>& _Left,
+ const reverse_iterator<_RanIt2>& _Right)
+ {
+ return (_Right < _Left);
+ }
+
+template<class _RanIt1,
+ class _RanIt2> inline
+ bool __cdecl operator<=(const reverse_iterator<_RanIt1>& _Left,
+ const reverse_iterator<_RanIt2>& _Right)
+ {
+ return (!(_Right < _Left));
+ }
+
+template<class _RanIt1,
+ class _RanIt2> inline
+ bool __cdecl operator>=(const reverse_iterator<_RanIt1>& _Left,
+ const reverse_iterator<_RanIt2>& _Right)
+ {
+ return (!(_Left < _Right));
+ }
+
+
+template<class _BidIt,
+ class _Ty,
+ class _Reference = _Ty&,
+ class _Pointer = _Ty *,
+ class _Diff = ptrdiff_t>
+ class reverse_bidirectional_iterator
+ : public iterator<bidirectional_iterator_tag, _Ty, _Diff,
+ _Pointer, _Reference>
+ {
+public:
+ typedef reverse_bidirectional_iterator<_BidIt, _Ty, _Reference,
+ _Pointer, _Diff> _Myt;
+ typedef _BidIt iterator_type;
+
+ reverse_bidirectional_iterator()
+ {
+ }
+
+ explicit reverse_bidirectional_iterator(_BidIt _Right)
+ : current(_Right)
+ {
+ }
+
+ _BidIt base() const
+ {
+ return (current);
+ }
+
+ _Reference operator*() const
+ {
+ _BidIt _Tmp = current;
+ return (*--_Tmp);
+ }
+
+ _Pointer operator->() const
+ {
+ _Reference _Tmp = **this;
+ return (&_Tmp);
+ }
+
+ _Myt& operator++()
+ {
+ --current;
+ return (*this);
+ }
+
+ _Myt operator++(int)
+ {
+ _Myt _Tmp = *this;
+ --current;
+ return (_Tmp);
+ }
+
+ _Myt& operator--()
+ {
+ ++current;
+ return (*this);
+ }
+
+ _Myt operator--(int)
+ {
+ _Myt _Tmp = *this;
+ ++current;
+ return (_Tmp);
+ }
+
+ bool operator==(const _Myt& _Right) const
+ {
+ return (current == _Right.current);
+ }
+
+ bool operator!=(const _Myt& _Right) const
+ {
+ return (!(*this == _Right));
+ }
+
+protected:
+ _BidIt current;
+ };
+
+
+template<class _BidIt,
+ class _BidIt2 = _BidIt>
+ class _Revbidit
+ : public iterator<
+ typename iterator_traits<_BidIt>::iterator_category,
+ typename iterator_traits<_BidIt>::value_type,
+ typename iterator_traits<_BidIt>::difference_type,
+ typename iterator_traits<_BidIt>::pointer,
+ typename iterator_traits<_BidIt>::reference>
+ {
+public:
+ typedef _Revbidit<_BidIt, _BidIt2> _Myt;
+ typedef typename iterator_traits<_BidIt>::difference_type _Diff;
+ typedef typename iterator_traits<_BidIt>::pointer _Pointer;
+ typedef typename iterator_traits<_BidIt>::reference _Reference;
+ typedef _BidIt iterator_type;
+
+ _Revbidit()
+ {
+ }
+
+ explicit _Revbidit(_BidIt _Right)
+ : current(_Right)
+ {
+ }
+
+ _Revbidit(const _Revbidit<_BidIt2>& _Other)
+ : current (_Other.base())
+ {
+ }
+
+ _BidIt base() const
+ {
+ return (current);
+ }
+
+ _Reference operator*() const
+ {
+ _BidIt _Tmp = current;
+ return (*--_Tmp);
+ }
+
+ _Pointer operator->() const
+ {
+ _Reference _Tmp = **this;
+ return (&_Tmp);
+ }
+
+ _Myt& operator++()
+ {
+ --current;
+ return (*this);
+ }
+
+ _Myt operator++(int)
+ {
+ _Myt _Tmp = *this;
+ --current;
+ return (_Tmp);
+ }
+
+ _Myt& operator--()
+ {
+ ++current;
+ return (*this);
+ }
+
+ _Myt operator--(int)
+ {
+ _Myt _Tmp = *this;
+ ++current;
+ return (_Tmp);
+ }
+
+ bool operator==(const _Myt& _Right) const
+ {
+ return (current == _Right.current);
+ }
+
+ bool operator!=(const _Myt& _Right) const
+ {
+ return (!(*this == _Right));
+ }
+
+protected:
+ _BidIt current;
+ };
+
+
+template<class _Elem,
+ class _Traits>
+ class istreambuf_iterator
+ : public _Iterator_with_base<input_iterator_tag,
+ _Elem, typename _Traits::off_type, _Elem *, _Elem&, _Iterator_base_secure>
+ {
+ typedef istreambuf_iterator<_Elem, _Traits> _Myt;
+public:
+ typedef _Elem char_type;
+ typedef _Traits traits_type;
+ typedef basic_streambuf<_Elem, _Traits> streambuf_type;
+ typedef basic_istream<_Elem, _Traits> istream_type;
+ typedef typename traits_type::int_type int_type;
+
+ istreambuf_iterator(streambuf_type *_Sb = 0) throw ()
+ : _Strbuf(_Sb), _Got(_Sb == 0)
+ {
+ }
+
+ istreambuf_iterator(istream_type& _Istr) throw ()
+ : _Strbuf(_Istr.rdbuf()), _Got(_Istr.rdbuf() == 0)
+ {
+ }
+
+ _Elem operator*() const
+ {
+ if (!_Got)
+ ((_Myt *)this)->_Peek();
+
+
+
+
+
+
+ return (_Val);
+ }
+
+ _Myt& operator++()
+ {
+
+
+
+
+
+
+ _Inc();
+ return (*this);
+ }
+
+ _Myt operator++(int)
+ {
+ if (!_Got)
+ _Peek();
+ _Myt _Tmp = *this;
+ ++*this;
+ return (_Tmp);
+ }
+
+ bool equal(const _Myt& _Right) const
+ {
+ if (!_Got)
+ ((_Myt *)this)->_Peek();
+ if (!_Right._Got)
+ ((_Myt *)&_Right)->_Peek();
+ return (_Strbuf == 0 && _Right._Strbuf == 0
+ || _Strbuf != 0 && _Right._Strbuf != 0);
+ }
+
+private:
+ void _Inc()
+ {
+ if (_Strbuf == 0
+ || traits_type::eq_int_type(traits_type::eof(),
+ _Strbuf->sbumpc()))
+ _Strbuf = 0, _Got = true;
+ else
+ _Got = false;
+ }
+
+ _Elem _Peek()
+ {
+ int_type _Meta;
+ if (_Strbuf == 0
+ || traits_type::eq_int_type(traits_type::eof(),
+ _Meta = _Strbuf->sgetc()))
+ _Strbuf = 0;
+ else
+ _Val = traits_type::to_char_type(_Meta);
+ _Got = true;
+ return (_Val);
+ }
+
+ streambuf_type *_Strbuf;
+ bool _Got;
+ _Elem _Val;
+ };
+
+
+template<class _Elem,
+ class _Traits> inline
+ bool __cdecl operator==(
+ const istreambuf_iterator<_Elem, _Traits>& _Left,
+ const istreambuf_iterator<_Elem, _Traits>& _Right)
+ {
+ return (_Left.equal(_Right));
+ }
+
+template<class _Elem,
+ class _Traits> inline
+ bool __cdecl operator!=(
+ const istreambuf_iterator<_Elem, _Traits>& _Left,
+ const istreambuf_iterator<_Elem, _Traits>& _Right)
+ {
+ return (!(_Left == _Right));
+ }
+
+
+template<class _Elem,
+ class _Traits>
+ class ostreambuf_iterator
+ : public _Outit_with_base<_Iterator_base_secure>
+ {
+ typedef ostreambuf_iterator<_Elem, _Traits> _Myt;
+public:
+ typedef _Elem char_type;
+ typedef _Traits traits_type;
+ typedef basic_streambuf<_Elem, _Traits> streambuf_type;
+ typedef basic_ostream<_Elem, _Traits> ostream_type;
+
+ typedef _Range_checked_iterator_tag _Checked_iterator_category;
+
+ ostreambuf_iterator(streambuf_type *_Sb) throw ()
+ : _Failed(false), _Strbuf(_Sb)
+ {
+ }
+
+ ostreambuf_iterator(ostream_type& _Ostr) throw ()
+ : _Failed(false), _Strbuf(_Ostr.rdbuf())
+ {
+ }
+
+ _Myt& operator=(_Elem _Right)
+ {
+ if (_Strbuf == 0
+ || traits_type::eq_int_type(_Traits::eof(),
+ _Strbuf->sputc(_Right)))
+ _Failed = true;
+ return (*this);
+ }
+
+ _Myt& operator*()
+ {
+ return (*this);
+ }
+
+ _Myt& operator++()
+ {
+ return (*this);
+ }
+
+ _Myt& operator++(int)
+ {
+ return (*this);
+ }
+
+ bool failed() const throw ()
+ {
+ return (_Failed);
+ }
+
+private:
+ bool _Failed;
+ streambuf_type *_Strbuf;
+ };
+
+
+
+
+template<class _InIt, class _OutIt, class _InOutItCat>
+inline
+ _OutIt __cdecl _Copy_opt(_InIt _First, _InIt _Last, _OutIt _Dest,
+ _InOutItCat, _Nonscalar_ptr_iterator_tag, _Range_checked_iterator_tag)
+ {
+ ;
+ for (; _First != _Last; ++_Dest, ++_First)
+ *_Dest = *_First;
+ return (_Dest);
+ }
+
+
+template<class _InIt, class _OutIt>
+inline
+ _OutIt __cdecl _Copy_opt(_InIt _First, _InIt _Last, _OutIt _Dest,
+ random_access_iterator_tag, _Nonscalar_ptr_iterator_tag, _Range_checked_iterator_tag)
+ {
+
+ _OutIt _Result = _Dest + (_Last - _First);
+ _Copy_opt(_First, _Last, ::std:: _Checked_base(_Dest),
+ forward_iterator_tag(), _Nonscalar_ptr_iterator_tag(), _Range_checked_iterator_tag());
+ return _Result;
+ }
+
+
+template<class _InIt, class _OutIt, class _InOutItCat>
+inline
+ _OutIt __cdecl _Copy_opt(_InIt _First, _InIt _Last, _OutIt _Dest,
+ _InOutItCat, _Scalar_ptr_iterator_tag, _Range_checked_iterator_tag)
+ {
+
+
+
+
+
+
+
+ ptrdiff_t _Off = _Last - _First;
+
+ _OutIt _Result = _Dest + _Off;
+ if (_Off > 0)
+ ::memmove_s((&*_Dest), (_Off * sizeof (*_First)), (&*_First), (_Off * sizeof (*_First)));
+ return _Result;
+ }
+
+
+template<class _InIt, class _OutIt, class _InOutItCat, class _Ty>
+inline
+__declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
+ _OutIt __cdecl _Copy_opt(_InIt _First, _InIt _Last, _OutIt _Dest,
+ _InOutItCat _First_dest_cat, _Ty _PtrCat, _Unchecked_iterator_tag)
+ {
+ return _Copy_opt(_First, _Last, _Dest, _First_dest_cat, _PtrCat, _Range_checked_iterator_tag());
+ }
+
+
+template<class _InIt,
+ class _OutIt> inline
+ _OutIt __cdecl copy(_InIt _First, _InIt _Last, _OutIt _Dest)
+ {
+ return (_Copy_opt(::std:: _Checked_base(_First), ::std:: _Checked_base(_Last), _Dest,
+ _Iter_random(_First, _Dest), _Ptr_cat(_First, _Dest), ::std:: _Checked_cat(_Dest)));
+ }
+
+
+template<class _InIt, class _OutIt, class _InOutItCat, class _MoveCatTy>
+inline
+ _OutIt __cdecl _Move_opt(_InIt _First, _InIt _Last, _OutIt _Dest,
+ _InOutItCat _First_dest_cat, _MoveCatTy, _Range_checked_iterator_tag)
+ {
+ return _Copy_opt(_First, _Last, _Dest,
+ _First_dest_cat, _Ptr_cat(_First, _Dest), _Range_checked_iterator_tag());
+ }
+
+template<class _InIt, class _OutIt, class _InOutItCat>
+inline
+ _OutIt __cdecl _Move_opt(_InIt _First, _InIt _Last, _OutIt _Dest,
+ _InOutItCat, _Swap_move_tag, _Range_checked_iterator_tag)
+ {
+ ;
+ for (; _First != _Last; ++_Dest, ++_First)
+ ::std:: swap(*_Dest, *_First);
+ return (_Dest);
+ }
+
+
+template<class _InIt, class _OutIt, class _InOutItCat>
+inline
+ _OutIt __cdecl _Move_opt(_InIt _First, _InIt _Last, _OutIt _Dest,
+ random_access_iterator_tag, _Swap_move_tag _Move_cat, _Range_checked_iterator_tag)
+ {
+
+ _OutIt _Result = _Dest + (_Last - _First);
+ _Move_opt(_First, _Last, ::std:: _Checked_base(_Dest),
+ forward_iterator_tag(), _Move_cat, _Range_checked_iterator_tag());
+ return _Result;
+ }
+
+
+
+template<class _InIt, class _OutIt, class _InOutItCat, class _MoveCatTy>
+inline
+__declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
+ _OutIt __cdecl _Move_opt(_InIt _First, _InIt _Last, _OutIt _Dest,
+ _InOutItCat _First_dest_cat, _MoveCatTy _Move_cat, _Unchecked_iterator_tag)
+ {
+ return _Move_opt(_First, _Last, _Dest, _First_dest_cat, _Move_cat, _Range_checked_iterator_tag());
+ }
+
+
+template<class _InIt, class _OutIt>
+inline
+ _OutIt __cdecl _Move(_InIt _First, _InIt _Last, _OutIt _Dest)
+ {
+ return _Move_opt(::std:: _Checked_base(_First), ::std:: _Checked_base(_Last), _Dest,
+ _Iter_random(_First, _Dest), _Move_cat(_Dest), ::std:: _Checked_cat(_Dest));
+ }
+
+
+template<class _BidIt1, class _BidIt2, class _InOutItCat>
+inline
+ _BidIt2 __cdecl _Copy_backward_opt(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest,
+ _InOutItCat, _Nonscalar_ptr_iterator_tag, _Range_checked_iterator_tag)
+ {
+ ;
+ while (_First != _Last)
+ *--_Dest = *--_Last;
+ return (_Dest);
+ }
+
+
+template<class _InIt, class _OutIt>
+inline
+ _OutIt __cdecl _Copy_backward_opt(_InIt _First, _InIt _Last, _OutIt _Dest,
+ random_access_iterator_tag, _Nonscalar_ptr_iterator_tag, _Range_checked_iterator_tag)
+ {
+
+ _OutIt _Result = _Dest - (_Last - _First);
+ _Copy_backward_opt(_First, _Last, ::std:: _Checked_base(_Dest),
+ forward_iterator_tag(), _Nonscalar_ptr_iterator_tag(), _Range_checked_iterator_tag());
+ return _Result;
+ }
+
+
+template<class _InIt, class _OutIt, class _InOutItCat>
+inline
+ _OutIt __cdecl _Copy_backward_opt(_InIt _First, _InIt _Last, _OutIt _Dest,
+ _InOutItCat, _Scalar_ptr_iterator_tag, _Range_checked_iterator_tag)
+ {
+
+
+
+
+
+
+
+ ptrdiff_t _Off = _Last - _First;
+
+
+
+ _OutIt _Result = _Dest - _Off;
+ if (_Off > 0)
+ ::memmove_s((&*_Result), (_Off * sizeof (*_First)), (&*_First), (_Off * sizeof (*_First)));
+ return _Result;
+ }
+
+
+template<class _BidIt1, class _BidIt2, class _InOutItCat, class _Ty>
+inline
+__declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
+ _BidIt2 __cdecl _Copy_backward_opt(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest,
+ _InOutItCat _First_dest_cat, _Ty _PtrCat, _Unchecked_iterator_tag)
+ {
+ return _Copy_backward_opt(_First, _Last, _Dest,
+ _First_dest_cat, _PtrCat, _Range_checked_iterator_tag());
+ }
+
+
+template<class _BidIt1,
+ class _BidIt2> inline
+ _BidIt2 __cdecl copy_backward(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest)
+ {
+ return _Copy_backward_opt(::std:: _Checked_base(_First), ::std:: _Checked_base(_Last), _Dest,
+ _Iter_random(_First, _Dest), _Ptr_cat(_First, _Dest), ::std:: _Checked_cat(_Dest));
+ }
+
+
+template<class _BidIt1, class _BidIt2, class _InOutItCat, class _MoveCatTy>
+inline
+ _BidIt2 __cdecl _Move_backward_opt(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest,
+ _InOutItCat _First_dest_cat, _MoveCatTy, _Range_checked_iterator_tag)
+ {
+ return _Copy_backward_opt(_First, _Last, _Dest,
+ _First_dest_cat, _Ptr_cat(_First, _Dest), _Range_checked_iterator_tag());
+ }
+
+template<class _BidIt1, class _BidIt2, class _InOutItCat>
+inline
+ _BidIt2 __cdecl _Move_backward_opt(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest,
+ _InOutItCat, _Swap_move_tag, _Range_checked_iterator_tag)
+ {
+ ;
+ while (_First != _Last)
+ ::std:: swap(*--_Dest, *--_Last);
+ return (_Dest);
+ }
+
+
+template<class _BidIt1, class _BidIt2>
+inline
+ _BidIt2 __cdecl _Move_backward_opt(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest,
+ random_access_iterator_tag, _Swap_move_tag _Move_cat, _Range_checked_iterator_tag)
+ {
+
+ _BidIt2 _Result = _Dest - (_Last - _First);
+ _Move_backward_opt(_First, _Last, ::std:: _Checked_base(_Dest),
+ forward_iterator_tag(), _Move_cat, _Range_checked_iterator_tag());
+ return _Result;
+ }
+
+
+
+template<class _BidIt1, class _BidIt2, class _InOutItCat, class _MoveCatTy>
+inline
+__declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
+ _BidIt2 __cdecl _Move_backward_opt(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest,
+ _InOutItCat _First_dest_cat, _MoveCatTy _Move_cat, _Unchecked_iterator_tag)
+ {
+ return _Move_backward_opt(_First, _Last, _Dest,
+ _First_dest_cat, _Move_cat, _Range_checked_iterator_tag());
+ }
+
+
+template<class _BidIt1, class _BidIt2>
+inline
+ _BidIt2 __cdecl _Move_backward(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest)
+ {
+ return _Move_backward_opt(::std:: _Checked_base(_First), ::std:: _Checked_base(_Last), _Dest,
+ _Iter_random(_First, _Dest), _Move_cat(_Dest), ::std:: _Checked_cat(_Dest));
+ }
+
+
+template<class _InIt1, class _InIt2, class _InItCats>
+inline
+ pair<_InIt1, _InIt2>
+ __cdecl _Mismatch(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2,
+ _InItCats, _Range_checked_iterator_tag)
+ {
+
+
+
+
+
+
+
+ for (; _First1 != _Last1 && *_First1 == *_First2; )
+ ++_First1, ++_First2;
+ return (pair<_InIt1, _InIt2>(_First1, _First2));
+ }
+
+
+template<class _InIt1, class _InIt2>
+inline
+ pair<_InIt1, _InIt2>
+ __cdecl _Mismatch(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2,
+ random_access_iterator_tag, _Range_checked_iterator_tag)
+ {
+
+ _InIt2 _Last2 = _First2 + (_Last1 - _First1); (_Last2);
+ pair<_InIt1, typename ::std:: _Checked_iterator_base_helper<_InIt2>::_Checked_iterator_base_type> _Result =
+ _Mismatch(_First1, _Last1, ::std:: _Checked_base(_First2),
+ forward_iterator_tag(), _Range_checked_iterator_tag());
+ ::std:: _Checked_assign_from_base(_First2, _Result.second);
+ return (pair<_InIt1, _InIt2>(_Result.first, _First2));
+ }
+
+
+
+template<class _InIt1, class _InIt2, class _InItCats>
+inline
+__declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
+ pair<_InIt1, _InIt2>
+ __cdecl _Mismatch(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2,
+ _InItCats _InIt_cats, _Unchecked_iterator_tag)
+ {
+ return _Mismatch(_First1, _Last1, _First2,
+ _InIt_cats, _Range_checked_iterator_tag());
+ }
+
+
+template<class _InIt1, class _InIt2>
+inline
+ pair<_InIt1, _InIt2>
+ __cdecl mismatch(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2)
+ {
+
+ pair<typename ::std:: _Checked_iterator_base_helper<_InIt1>::_Checked_iterator_base_type, _InIt2> _Result =
+ _Mismatch(::std:: _Checked_base(_First1), ::std:: _Checked_base(_Last1), _First2,
+ _Iter_random(_First1, _First2), ::std:: _Checked_cat(_First2));
+ ::std:: _Checked_assign_from_base(_First1, _Result.first);
+ return (pair<_InIt1, _InIt2>(_First1, _Result.second));
+
+
+
+
+ }
+
+
+template<class _InIt1, class _InIt2, class _Pr, class _InItCats>
+inline
+ pair<_InIt1, _InIt2>
+ __cdecl _Mismatch(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr _Pred,
+ _InItCats, _Range_checked_iterator_tag)
+ {
+
+
+
+
+
+
+
+
+ for (; _First1 != _Last1 && _Pred(*_First1, *_First2); )
+ ++_First1, ++_First2;
+ return (pair<_InIt1, _InIt2>(_First1, _First2));
+ }
+
+
+template<class _InIt1, class _InIt2, class _Pr>
+inline
+ pair<_InIt1, _InIt2>
+ __cdecl _Mismatch(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr _Pred,
+ random_access_iterator_tag, _Range_checked_iterator_tag)
+ {
+
+ _InIt2 _Last2 = _First2 + (_Last1 - _First1); (_Last2);
+ pair<_InIt1, typename ::std:: _Checked_iterator_base_helper<_InIt2>::_Checked_iterator_base_type> _Result =
+ _Mismatch(_First1, _Last1, ::std:: _Checked_base(_First2), _Pred,
+ forward_iterator_tag(), _Range_checked_iterator_tag());
+ ::std:: _Checked_assign_from_base(_First2, _Result.second);
+ return (pair<_InIt1, _InIt2>(_Result.first, _First2));
+ }
+
+
+
+template<class _InIt1, class _InIt2, class _Pr, class _InItCats>
+inline
+__declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
+ pair<_InIt1, _InIt2>
+ __cdecl _Mismatch(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr _Pred,
+ _InItCats _InIt_cats, _Unchecked_iterator_tag)
+ {
+ return _Mismatch(_First1, _Last1, _First2, _Pred,
+ _InIt_cats, _Range_checked_iterator_tag());
+ }
+
+
+template<class _InIt1, class _InIt2, class _Pr>
+inline
+ pair<_InIt1, _InIt2>
+ __cdecl mismatch(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr _Pred)
+ {
+
+ pair<typename ::std:: _Checked_iterator_base_helper<_InIt1>::_Checked_iterator_base_type, _InIt2> _Result =
+ _Mismatch(::std:: _Checked_base(_First1), ::std:: _Checked_base(_Last1), _First2, _Pred,
+ _Iter_random(_First1, _First2), ::std:: _Checked_cat(_First2));
+ ::std:: _Checked_assign_from_base(_First1, _Result.first);
+ return (pair<_InIt1, _InIt2>(_First1, _Result.second));
+
+
+
+
+ }
+
+
+template<class _InIt1, class _InIt2, class _InItCats>
+inline
+ bool __cdecl _Equal(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2,
+ _InItCats, _Range_checked_iterator_tag)
+ {
+ return (_Mismatch(_First1, _Last1, _First2,
+ forward_iterator_tag(), _Range_checked_iterator_tag()).first == _Last1);
+ }
+
+inline bool __cdecl _Equal(const char *_First1,
+ const char *_Last1, const char *_First2,
+ random_access_iterator_tag, _Range_checked_iterator_tag)
+ {
+
+
+
+
+
+
+ return (::memcmp(_First1, _First2, _Last1 - _First1) == 0);
+ }
+
+inline bool __cdecl _Equal(const signed char *_First1,
+ const signed char *_Last1, const signed char *_First2,
+ random_access_iterator_tag, _Range_checked_iterator_tag)
+ {
+
+
+
+
+
+
+ return (::memcmp(_First1, _First2, _Last1 - _First1) == 0);
+ }
+
+inline bool __cdecl _Equal(const unsigned char *_First1,
+ const unsigned char *_Last1, const unsigned char *_First2,
+ random_access_iterator_tag, _Range_checked_iterator_tag)
+ {
+
+
+
+
+
+
+ return (::memcmp(_First1, _First2, _Last1 - _First1) == 0);
+ }
+
+
+template<class _InIt1, class _InIt2>
+inline
+ bool __cdecl _Equal(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2,
+ random_access_iterator_tag, _Range_checked_iterator_tag)
+ {
+
+ _InIt2 _Last2 = _First2 + (_Last1 - _First1); (_Last2);
+ return _Equal(_First1, _Last1, ::std:: _Checked_base(_First2),
+ forward_iterator_tag(), _Range_checked_iterator_tag());
+ }
+
+
+
+template<class _InIt1, class _InIt2, class _InItCats>
+inline
+__declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
+ bool __cdecl _Equal(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2,
+ _InItCats _InIt_cats,_Unchecked_iterator_tag)
+ {
+ return _Equal(_First1, _Last1, _First2,
+ _InIt_cats, _Range_checked_iterator_tag());
+ }
+
+
+template<class _InIt1, class _InIt2>
+inline
+ bool __cdecl equal(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2)
+ {
+ return _Equal(::std:: _Checked_base(_First1), ::std:: _Checked_base(_Last1), _First2,
+ _Iter_random(_First1, _First2), ::std:: _Checked_cat(_First2));
+ }
+
+
+template<class _InIt1, class _InIt2, class _Pr, class _InItCats>
+inline
+ bool __cdecl _Equal(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr _Pred,
+ _InItCats, _Range_checked_iterator_tag)
+ {
+ return (_Mismatch(_First1, _Last1, _First2, _Pred,
+ forward_iterator_tag(), _Range_checked_iterator_tag()).first == _Last1);
+ }
+
+
+template<class _InIt1, class _InIt2, class _Pr>
+inline
+ bool __cdecl _Equal(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr _Pred,
+ random_access_iterator_tag, _Range_checked_iterator_tag)
+ {
+
+ _InIt2 _Last2 = _First2 + (_Last1 - _First1); (_Last2);
+ return _Equal(_First1, _Last1, ::std:: _Checked_base(_First2), _Pred,
+ forward_iterator_tag(), _Range_checked_iterator_tag());
+ }
+
+
+
+template<class _InIt1, class _InIt2, class _Pr, class _InItCats>
+inline
+__declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
+ bool __cdecl _Equal(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr _Pred,
+ _InItCats _InIt_cats,_Unchecked_iterator_tag)
+ {
+ return _Equal(_First1, _Last1, _First2, _Pred,
+ _InIt_cats, _Range_checked_iterator_tag());
+ }
+
+
+template<class _InIt1, class _InIt2, class _Pr>
+inline
+ bool __cdecl equal(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr _Pred)
+ {
+ return _Equal(::std:: _Checked_base(_First1), ::std:: _Checked_base(_Last1), _First2, _Pred,
+ _Iter_random(_First1, _First2), ::std:: _Checked_cat(_First2));
+ }
+
+
+template<class _FwdIt, class _Ty> inline
+ void __cdecl _Fill(_FwdIt _First, _FwdIt _Last, const _Ty& _Val)
+ {
+ ;
+ for (; _First != _Last; ++_First)
+ *_First = _Val;
+ }
+
+inline void __cdecl _Fill( char *_First,
+ char *_Last, int _Val)
+ {
+ ;
+ ::memset(_First, _Val, _Last - _First);
+ }
+
+inline void __cdecl _Fill( signed char *_First,
+ signed char *_Last, int _Val)
+ {
+ ;
+ ::memset(_First, _Val, _Last - _First);
+ }
+
+inline void __cdecl _Fill(
+ unsigned char *_First,
+ unsigned char *_Last, int _Val)
+ {
+ ;
+ ::memset(_First, _Val, _Last - _First);
+ }
+
+template<class _FwdIt, class _Ty> inline
+ void __cdecl fill(_FwdIt _First, _FwdIt _Last, const _Ty& _Val)
+ {
+ _Fill(::std:: _Checked_base(_First), ::std:: _Checked_base(_Last), _Val);
+ }
+
+
+template<class _OutIt,
+ class _Diff,
+ class _Ty> inline
+ void __cdecl _Fill_n(_OutIt _First, _Diff _Count, const _Ty& _Val,
+ _Range_checked_iterator_tag)
+ {
+ for (; 0 < _Count; --_Count, ++_First)
+ *_First = _Val;
+ }
+
+inline void __cdecl _Fill_n( char *_First,
+ size_t _Count, int _Val, _Range_checked_iterator_tag)
+ {
+
+
+
+
+
+
+ ::memset(_First, _Val, _Count);
+ }
+
+inline void __cdecl _Fill_n( signed char *_First,
+ size_t _Count, int _Val, _Range_checked_iterator_tag)
+ {
+
+
+
+
+
+
+ ::memset(_First, _Val, _Count);
+ }
+
+inline void __cdecl _Fill_n( unsigned char *_First,
+ size_t _Count, int _Val, _Range_checked_iterator_tag)
+ {
+
+
+
+
+
+
+ ::memset(_First, _Val, _Count);
+ }
+
+template<class _OutIt, class _Diff, class _Ty, class _OutCat>
+inline
+ void __cdecl _Fill_n(_OutIt _First, _Diff _Count, const _Ty& _Val,
+ _OutCat, _Range_checked_iterator_tag)
+ {
+ _Fill_n(_First, _Count, _Val, _Range_checked_iterator_tag());
+ }
+
+
+template<class _OutIt, class _Diff, class _Ty>
+inline
+ void __cdecl _Fill_n(_OutIt _First, _Diff _Count, const _Ty& _Val,
+ random_access_iterator_tag, _Range_checked_iterator_tag)
+ {
+
+ _OutIt _Last = _First + _Count; (_Last);
+ _Fill_n(::std:: _Checked_base(_First), _Count, _Val,
+ _Range_checked_iterator_tag());
+ }
+
+
+
+template<class _OutIt, class _Diff, class _Ty, class _OutCat>
+inline
+__declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
+ void __cdecl _Fill_n(_OutIt _First, _Diff _Count, const _Ty& _Val,
+ _OutCat _First_cat, _Unchecked_iterator_tag)
+ {
+ _Fill_n(_First, _Count, _Val, _First_cat, _Range_checked_iterator_tag());
+ }
+
+
+template<class _OutIt,
+ class _Diff,
+ class _Ty> inline
+ void __cdecl fill_n(_OutIt _First, _Diff _Count, const _Ty& _Val)
+ {
+ _Fill_n(_First, _Count, _Val, _Iter_cat(_First), ::std:: _Checked_cat(_First));
+ }
+
+
+template<class _InIt1, class _InIt2> inline
+ bool __cdecl _Lexicographical_compare(_InIt1 _First1, _InIt1 _Last1,
+ _InIt2 _First2, _InIt2 _Last2)
+ {
+ ;
+ ;
+ for (; _First1 != _Last1 && _First2 != _Last2; ++_First1, ++_First2)
+ if (((*_First1) < (*_First2)))
+ return (true);
+ else if (*_First2 < *_First1)
+ return (false);
+ return (_First1 == _Last1 && _First2 != _Last2);
+ }
+
+template<class _InIt1, class _InIt2> inline
+ bool __cdecl lexicographical_compare(_InIt1 _First1, _InIt1 _Last1,
+ _InIt2 _First2, _InIt2 _Last2)
+ {
+ return _Lexicographical_compare(::std:: _Checked_base(_First1), ::std:: _Checked_base(_Last1),
+ ::std:: _Checked_base(_First2), ::std:: _Checked_base(_Last2));
+ }
+
+inline bool __cdecl lexicographical_compare(
+ const unsigned char *_First1, const unsigned char *_Last1,
+ const unsigned char *_First2, const unsigned char *_Last2)
+ {
+ ;
+ ;
+ ptrdiff_t _Num1 = _Last1 - _First1;
+ ptrdiff_t _Num2 = _Last2 - _First2;
+ int _Ans = ::memcmp(_First1, _First2, _Num1 < _Num2 ? _Num1 : _Num2);
+ return (_Ans < 0 || _Ans == 0 && _Num1 < _Num2);
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+template<class _InIt1,
+ class _InIt2,
+ class _Pr> inline
+ bool __cdecl _Lexicographical_compare(_InIt1 _First1, _InIt1 _Last1,
+ _InIt2 _First2, _InIt2 _Last2, _Pr _Pred)
+ {
+ ;
+ ;
+ ;
+ for (; _First1 != _Last1 && _First2 != _Last2; ++_First1, ++_First2)
+ if (_Pred(*_First1, *_First2))
+ return (true);
+ else if (_Pred(*_First2, *_First1))
+ return (false);
+ return (_First1 == _Last1 && _First2 != _Last2);
+ }
+
+template<class _InIt1, class _InIt2, class _Pr> inline
+ bool __cdecl lexicographical_compare(_InIt1 _First1, _InIt1 _Last1,
+ _InIt2 _First2, _InIt2 _Last2, _Pr _Pred)
+ {
+ return _Lexicographical_compare(::std:: _Checked_base(_First1), ::std:: _Checked_base(_Last1),
+ ::std:: _Checked_base(_First2), ::std:: _Checked_base(_Last2), _Pred);
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+template<class _Ty> inline
+ const _Ty& (__cdecl max)(const _Ty& _Left, const _Ty& _Right)
+ {
+ return (((_Left) < (_Right)) ? _Right : _Left);
+ }
+
+
+template<class _Ty,
+ class _Pr> inline
+ const _Ty& (__cdecl max)(const _Ty& _Left, const _Ty& _Right, _Pr _Pred)
+ {
+ return (_Pred(_Left, _Right) ? _Right : _Left);
+ }
+
+
+template<class _Ty> inline
+ const _Ty& (__cdecl min)(const _Ty& _Left, const _Ty& _Right)
+ {
+ return (((_Right) < (_Left)) ? _Right : _Left);
+ }
+
+
+template<class _Ty,
+ class _Pr> inline
+ const _Ty& (__cdecl min)(const _Ty& _Left, const _Ty& _Right, _Pr _Pred)
+ {
+ return (_Pred(_Right, _Left) ? _Right : _Left);
+ }
+
+
+
+
+}
+
+namespace stdext {
+
+template<class _InIt,
+ class _OutIt> inline
+ _OutIt __cdecl unchecked_copy(_InIt _First, _InIt _Last, _OutIt _Dest)
+ {
+ return (::std:: _Copy_opt(::std:: _Checked_base(_First), ::std:: _Checked_base(_Last), _Dest,
+ ::std:: _Iter_random(_First, _Dest), ::std:: _Ptr_cat(_First, _Dest), ::std:: _Range_checked_iterator_tag()));
+ }
+
+template<class _InIt,
+ class _OutIt> inline
+ _OutIt __cdecl checked_copy(_InIt _First, _InIt _Last, _OutIt _Dest)
+ {
+ return (::std:: _Copy_opt(::std:: _Checked_base(_First), ::std:: _Checked_base(_Last), _Dest,
+ ::std:: _Iter_random(_First, _Dest), ::std:: _Ptr_cat(_First, _Dest), ::std:: _Checked_cat(_Dest)));
+ }
+
+template<class _BidIt1,
+ class _BidIt2> inline
+ _BidIt2 __cdecl unchecked_copy_backward(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest)
+ {
+ return (::std:: _Copy_backward_opt(::std:: _Checked_base(_First), ::std:: _Checked_base(_Last), _Dest,
+ ::std:: _Iter_random(_First, _Dest), ::std:: _Ptr_cat(_First, _Dest), ::std:: _Range_checked_iterator_tag()));
+ }
+
+template<class _BidIt1,
+ class _BidIt2> inline
+ _BidIt2 __cdecl checked_copy_backward(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest)
+ {
+ return (::std:: _Copy_backward_opt(::std:: _Checked_base(_First), ::std:: _Checked_base(_Last), _Dest,
+ ::std:: _Iter_random(_First, _Dest), ::std:: _Ptr_cat(_First, _Dest), ::std:: _Checked_cat(_Dest)));
+ }
+
+template<class _InIt,
+ class _OutIt> inline
+ _OutIt __cdecl _Unchecked_move(_InIt _First, _InIt _Last, _OutIt _Dest)
+ {
+ return (::std:: _Move_opt(::std:: _Checked_base(_First), ::std:: _Checked_base(_Last), _Dest,
+ ::std:: _Iter_random(_First, _Dest), ::std:: _Move_cat(_Dest), ::std:: _Range_checked_iterator_tag()));
+ }
+
+template<class _InIt,
+ class _OutIt> inline
+ _OutIt __cdecl _Checked_move(_InIt _First, _InIt _Last, _OutIt _Dest)
+ {
+ return (::std:: _Move_opt(::std:: _Checked_base(_First), ::std:: _Checked_base(_Last), _Dest,
+ ::std:: _Iter_random(_First, _Dest), ::std:: _Move_cat(_Dest), ::std:: _Checked_cat(_Dest)));
+ }
+
+template<class _BidIt1,
+ class _BidIt2> inline
+ _BidIt2 __cdecl _Unchecked_move_backward(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest)
+ {
+ return (::std:: _Move_backward_opt(::std:: _Checked_base(_First), ::std:: _Checked_base(_Last), _Dest,
+ ::std:: _Iter_random(_First, _Dest), ::std:: _Move_cat(_Dest), ::std:: _Range_checked_iterator_tag()));
+ }
+
+template<class _BidIt1,
+ class _BidIt2> inline
+ _BidIt2 __cdecl _Checked_move_backward(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest)
+ {
+ return (::std:: _Move_backward_opt(::std:: _Checked_base(_First), ::std:: _Checked_base(_Last), _Dest,
+ ::std:: _Iter_random(_First, _Dest), ::std:: _Move_cat(_Dest), ::std:: _Checked_cat(_Dest)));
+ }
+
+template<class _OutIt,
+ class _Diff,
+ class _Ty> inline
+ void __cdecl unchecked_fill_n(_OutIt _First, _Diff _Count, const _Ty& _Val)
+ {
+ ::std:: _Fill_n(_First, _Count, _Val, ::std:: _Iter_cat(_First), ::std:: _Range_checked_iterator_tag());
+ }
+
+template<class _OutIt,
+ class _Diff,
+ class _Ty> inline
+ void __cdecl checked_fill_n(_OutIt _First, _Diff _Count, const _Ty& _Val)
+ {
+ ::std:: _Fill_n(_First, _Count, _Val, ::std:: _Iter_cat(_First), ::std:: _Checked_cat(_Dest));
+ }
+
+template<class _InIt1, class _InIt2>
+inline
+ ::std:: pair<_InIt1, _InIt2>
+ __cdecl unchecked_mismatch(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2)
+ {
+
+ ::std:: pair<typename ::std:: _Checked_iterator_base_helper<_InIt1>::_Checked_iterator_base_type, _InIt2> _Result =
+ ::std:: _Mismatch(::std:: _Checked_base(_First1), ::std:: _Checked_base(_Last1), _First2,
+ ::std:: _Iter_random(_First1, _First2), ::std:: _Range_checked_iterator_tag());
+ ::std:: _Checked_assign_from_base(_First1, _Result.first);
+ return (::std:: pair<_InIt1, _InIt2>(_First1, _Result.second));
+
+
+
+
+ }
+
+template<class _InIt1, class _InIt2>
+inline
+ ::std:: pair<_InIt1, _InIt2>
+ __cdecl checked_mismatch(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2)
+ {
+
+ ::std:: pair<typename ::std:: _Checked_iterator_base_helper<_InIt1>::_Checked_iterator_base_type, _InIt2> _Result =
+ ::std:: _Mismatch(::std:: _Checked_base(_First1), ::std:: _Checked_base(_Last1), _First2,
+ ::std:: _Iter_random(_First1, _First2), ::std:: _Checked_cat(_First2));
+ ::std:: _Checked_assign_from_base(_First1, _Result.first);
+ return (::std:: pair<_InIt1, _InIt2>(_First1, _Result.second));
+
+
+
+
+ }
+
+template<class _InIt1, class _InIt2, class _Pr>
+inline
+ ::std:: pair<_InIt1, _InIt2>
+ __cdecl unchecked_mismatch(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr _Pred)
+ {
+
+ ::std:: pair<typename ::std:: _Checked_iterator_base_helper<_InIt1>::_Checked_iterator_base_type, _InIt2> _Result =
+ ::std:: _Mismatch(::std:: _Checked_base(_First1), ::std:: _Checked_base(_Last1), _First2, _Pred,
+ ::std:: _Iter_random(_First1, _First2), ::std:: _Range_checked_iterator_tag());
+ ::std:: _Checked_assign_from_base(_First1, _Result.first);
+ return (::std:: pair<_InIt1, _InIt2>(_First1, _Result.second));
+
+
+
+
+ }
+
+template<class _InIt1, class _InIt2, class _Pr>
+inline
+ ::std:: pair<_InIt1, _InIt2>
+ __cdecl checked_mismatch(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr _Pred)
+ {
+
+ ::std:: pair<typename ::std:: _Checked_iterator_base_helper<_InIt1>::_Checked_iterator_base_type, _InIt2> _Result =
+ ::std:: _Mismatch(::std:: _Checked_base(_First1), ::std:: _Checked_base(_Last1), _First2, _Pred,
+ ::std:: _Iter_random(_First1, _First2), ::std:: _Checked_cat(_First2));
+ ::std:: _Checked_assign_from_base(_First1, _Result.first);
+ return (::std:: pair<_InIt1, _InIt2>(_First1, _Result.second));
+
+
+
+
+ }
+
+template<class _InIt1, class _InIt2>
+inline
+ bool __cdecl unchecked_equal(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2)
+ {
+ return ::std:: _Equal(::std:: _Checked_base(_First1), ::std:: _Checked_base(_Last1), _First2,
+ ::std:: _Iter_random(_First1, _First2), ::std:: _Range_checked_iterator_tag());
+ }
+
+template<class _InIt1, class _InIt2>
+inline
+ bool __cdecl checked_equal(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2)
+ {
+ return ::std:: _Equal(::std:: _Checked_base(_First1), ::std:: _Checked_base(_Last1), _First2,
+ ::std:: _Iter_random(_First1, _First2), ::std:: _Checked_cat(_First2));
+ }
+
+template<class _InIt1, class _InIt2, class _Pr>
+inline
+ bool __cdecl unchecked_equal(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr _Pred)
+ {
+ return ::std:: _Equal(::std:: _Checked_base(_First1), ::std:: _Checked_base(_Last1), _First2, _Pred,
+ ::std:: _Iter_random(_First1, _First2), ::std:: _Range_checked_iterator_tag());
+ }
+
+template<class _InIt1, class _InIt2, class _Pr>
+inline
+ bool __cdecl checked_equal(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr _Pred)
+ {
+ return ::std:: _Equal(::std:: _Checked_base(_First1), ::std:: _Checked_base(_Last1), _First2, _Pred,
+ ::std:: _Iter_random(_First1, _First2), ::std:: _Checked_cat(_First2));
+ }
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern "C"
+ void __cdecl _invalid_parameter_noinfo(void);
+
+
+
+
+
+#pragma warning(pop)
+#pragma pack(pop)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma pack(push,8)
+#pragma warning(push,3)
+
+ #pragma warning(disable: 4100)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+namespace std {
+
+template<class _Ty> inline
+ _Ty *_Allocate(size_t _Count, _Ty *)
+ {
+ if (_Count <= 0)
+ _Count = 0;
+ else if (((size_t)(-1) / _Count) < sizeof (_Ty))
+ throw std::bad_alloc(0);
+
+
+ return ((_Ty *)::operator new(_Count * sizeof (_Ty)));
+ }
+
+
+template<class _T1,
+ class _T2> inline
+ void _Construct(_T1 *_Ptr, const _T2& _Val)
+ {
+ void *_Vptr = _Ptr;
+ ::new (_Vptr) _T1(_Val);
+ }
+
+
+template<class _Ty> inline
+ void _Destroy(_Ty *_Ptr)
+ {
+ (_Ptr)->~_Ty();
+ }
+
+template<> inline
+ void _Destroy(char *)
+ {
+ }
+
+template<> inline
+ void _Destroy(wchar_t *)
+ {
+ }
+
+
+
+template<class _Ty>
+ struct _Allocator_base
+ {
+ typedef _Ty value_type;
+ };
+
+
+template<class _Ty>
+ struct _Allocator_base<const _Ty>
+ {
+ typedef _Ty value_type;
+ };
+
+
+template<class _Ty>
+ class allocator
+ : public _Allocator_base<_Ty>
+ {
+public:
+ typedef _Allocator_base<_Ty> _Mybase;
+ typedef typename _Mybase::value_type value_type;
+ typedef value_type *pointer;
+ typedef value_type & reference;
+ typedef const value_type *const_pointer;
+ typedef const value_type & const_reference;
+
+ typedef size_t size_type;
+ typedef ptrdiff_t difference_type;
+
+ template<class _Other>
+ struct rebind
+ {
+ typedef allocator<_Other> other;
+ };
+
+ pointer address(reference _Val) const
+ {
+ return (&_Val);
+ }
+
+ const_pointer address(const_reference _Val) const
+ {
+ return (&_Val);
+ }
+
+ allocator() throw ()
+ {
+ }
+
+ allocator(const allocator<_Ty>&) throw ()
+ {
+ }
+
+ template<class _Other>
+ allocator(const allocator<_Other>&) throw ()
+ {
+ }
+
+ template<class _Other>
+ allocator<_Ty>& operator=(const allocator<_Other>&)
+ {
+ return (*this);
+ }
+
+ void deallocate(pointer _Ptr, size_type)
+ {
+ ::operator delete(_Ptr);
+ }
+
+ pointer allocate(size_type _Count)
+ {
+ return (_Allocate(_Count, (pointer)0));
+ }
+
+ pointer allocate(size_type _Count, const void *)
+ {
+ return (allocate(_Count));
+ }
+
+ void construct(pointer _Ptr, const _Ty& _Val)
+ {
+ _Construct(_Ptr, _Val);
+ }
+
+ void destroy(pointer _Ptr)
+ {
+ _Destroy(_Ptr);
+ }
+
+ size_t max_size() const throw ()
+ {
+ size_t _Count = (size_t)(-1) / sizeof (_Ty);
+ return (0 < _Count ? _Count : 1);
+ }
+ };
+
+
+template<class _Ty,
+ class _Other> inline
+ bool operator==(const allocator<_Ty>&, const allocator<_Other>&) throw ()
+ {
+ return (true);
+ }
+
+template<class _Ty,
+ class _Other> inline
+ bool operator!=(const allocator<_Ty>&, const allocator<_Other>&) throw ()
+ {
+ return (false);
+ }
+
+
+template<> class allocator<void>
+ {
+public:
+ typedef void _Ty;
+ typedef _Ty *pointer;
+ typedef const _Ty *const_pointer;
+ typedef _Ty value_type;
+
+ template<class _Other>
+ struct rebind
+ {
+ typedef allocator<_Other> other;
+ };
+
+ allocator() throw ()
+ {
+ }
+
+ allocator(const allocator<_Ty>&) throw ()
+ {
+ }
+
+ template<class _Other>
+ allocator(const allocator<_Other>&) throw ()
+ {
+ }
+
+ template<class _Other>
+ allocator<_Ty>& operator=(const allocator<_Other>&)
+ {
+ return (*this);
+ }
+ };
+
+
+template<class _Ty,
+ class _Alloc> inline
+ void _Destroy_range(_Ty *_First, _Ty *_Last, _Alloc& _Al)
+ {
+ _Destroy_range(_First, _Last, _Al, _Ptr_cat(_First, _Last));
+ }
+
+template<class _Ty,
+ class _Alloc> inline
+ void _Destroy_range(_Ty *_First, _Ty *_Last, _Alloc& _Al,
+ _Nonscalar_ptr_iterator_tag)
+ {
+ for (; _First != _Last; ++_First)
+ _Al.destroy(_First);
+ }
+
+template<class _Ty,
+ class _Alloc> inline
+ void _Destroy_range(_Ty *_First, _Ty *_Last, _Alloc& _Al,
+ _Scalar_ptr_iterator_tag)
+ {
+ }
+}
+
+
+ #pragma warning(default: 4100)
+
+#pragma warning(pop)
+#pragma pack(pop)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma pack(push,8)
+#pragma warning(push,3)
+#pragma warning(disable:4412)
+
+
+
+
+
+namespace std {
+
+ #pragma warning(disable:4251)
+
+template<class _Elem,
+ class _Traits = char_traits<_Elem>,
+ class _Ax = allocator<_Elem> >
+ class basic_string;
+
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc>
+ class _String_const_iterator
+ : public _Ranit_base<_Elem, typename _Alloc::difference_type,
+ typename _Alloc::const_pointer, typename _Alloc::const_reference, _Iterator_base_secure>
+ {
+public:
+ typedef _String_const_iterator<_Elem, _Traits, _Alloc> _Myt;
+ typedef basic_string<_Elem, _Traits, _Alloc> _Mystring;
+
+ typedef random_access_iterator_tag iterator_category;
+ typedef _Elem value_type;
+ typedef typename _Alloc::difference_type difference_type;
+ typedef typename _Alloc::const_pointer pointer;
+ typedef typename _Alloc::const_reference reference;
+
+
+ typedef _Range_checked_iterator_tag _Checked_iterator_category;
+
+
+
+ typedef pointer _Checked_iterator_base_type;
+
+ _Checked_iterator_base_type _Checked_iterator_base() const
+ {
+ return _Myptr;
+ }
+
+ void _Checked_iterator_assign_from_base(_Checked_iterator_base_type _Base)
+ {
+ this->_Myptr = _Base;
+ }
+
+
+ _String_const_iterator()
+ {
+ _Myptr = 0;
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ _String_const_iterator(pointer _Ptr, const _Container_base *_Pstring)
+ {
+ { if (!(_Pstring != 0 && _Ptr != 0 && ((_Mystring *)_Pstring)->_Myptr() <= _Ptr && _Ptr <= (((_Mystring *)_Pstring)->_Myptr() + ((_Mystring *)_Pstring)->_Mysize))) { ((void)0); ::_invalid_parameter_noinfo(); } ; };
+ this->_Mycont = _Pstring;
+ _Myptr = _Ptr;
+ }
+
+
+
+
+
+
+
+
+
+
+
+ reference operator*() const
+ {
+
+
+
+
+
+
+
+
+
+
+
+ if (this->_Mycont != ((const _Container_base *)-2))
+ {
+ { if (!(this->_Mycont != 0)) { ((void)0); ::_invalid_parameter_noinfo(); } ; };
+ { if (!(_Myptr < (((_Mystring *)this->_Mycont)->_Myptr() + ((_Mystring *)(this->_Mycont))->_Mysize))) { ((void)0); ::_invalid_parameter_noinfo(); } ; };
+ }
+
+
+ return (*_Myptr);
+ }
+
+ pointer operator->() const
+ {
+ return (&**this);
+ }
+
+ _Myt& operator++()
+ {
+ if (this->_Mycont != ((const _Container_base *)-2))
+ {
+ { if (!(this->_Mycont != 0)) { ((void)0); ::_invalid_parameter_noinfo(); } ; };
+ { if (!(_Myptr < (((_Mystring *)this->_Mycont)->_Myptr() + ((_Mystring *)this->_Mycont)->_Mysize))) { ((void)0); ::_invalid_parameter_noinfo(); } ; };
+ }
+ ++_Myptr;
+ return (*this);
+ }
+
+ _Myt operator++(int)
+ {
+ _Myt _Tmp = *this;
+ ++*this;
+ return (_Tmp);
+ }
+
+ _Myt& operator--()
+ {
+ if (this->_Mycont != ((const _Container_base *)-2))
+ {
+ { if (!(this->_Mycont != 0)) { ((void)0); ::_invalid_parameter_noinfo(); } ; };
+ { if (!(_Myptr > ((_Mystring *)this->_Mycont)->_Myptr())) { ((void)0); ::_invalid_parameter_noinfo(); } ; };
+ }
+ --_Myptr;
+ return (*this);
+ }
+
+ _Myt operator--(int)
+ {
+ _Myt _Tmp = *this;
+ --*this;
+ return (_Tmp);
+ }
+
+ _Myt& operator+=(difference_type _Off)
+ {
+ if (this->_Mycont != ((const _Container_base *)-2))
+ {
+ { if (!(this->_Mycont != 0)) { ((void)0); ::_invalid_parameter_noinfo(); } ; };
+ { if (!(_Myptr + _Off <= (((_Mystring *)this->_Mycont)->_Myptr() + ((_Mystring *)this->_Mycont)->_Mysize) && _Myptr + _Off >= ((_Mystring *)this->_Mycont)->_Myptr())) { ((void)0); ::_invalid_parameter_noinfo(); } ; };
+ }
+ _Myptr += _Off;
+ return (*this);
+ }
+
+ _Myt operator+(difference_type _Off) const
+ {
+ _Myt _Tmp = *this;
+ return (_Tmp += _Off);
+ }
+
+ _Myt& operator-=(difference_type _Off)
+ {
+ return (*this += -_Off);
+ }
+
+ _Myt operator-(difference_type _Off) const
+ {
+ _Myt _Tmp = *this;
+ return (_Tmp -= _Off);
+ }
+
+ difference_type operator-(const _Myt& _Right) const
+ {
+
+
+
+
+ if (this->_Mycont != ((const _Container_base *)-2))
+ {
+ { if (!(this->_Mycont != 0 && this->_Mycont == _Right._Mycont)) { ((void)0); ::_invalid_parameter_noinfo(); } ; };
+ }
+
+
+ return (_Myptr - _Right._Myptr);
+ }
+
+ reference operator[](difference_type _Off) const
+ {
+ return (*(*this + _Off));
+ }
+
+ bool operator==(const _Myt& _Right) const
+ {
+
+
+
+
+ if (this->_Mycont != ((const _Container_base *)-2))
+ {
+ { if (!(this->_Mycont != 0 && this->_Mycont == _Right._Mycont)) { ((void)0); ::_invalid_parameter_noinfo(); } ; };
+ }
+
+
+ return (_Myptr == _Right._Myptr);
+ }
+
+ bool operator!=(const _Myt& _Right) const
+ {
+ return (!(*this == _Right));
+ }
+
+ bool operator<(const _Myt& _Right) const
+ {
+
+
+
+
+ if (this->_Mycont != ((const _Container_base *)-2))
+ {
+ { if (!(this->_Mycont != 0 && this->_Mycont == _Right._Mycont)) { ((void)0); ::_invalid_parameter_noinfo(); } ; };
+ }
+
+
+ return (_Myptr < _Right._Myptr);
+ }
+
+ bool operator>(const _Myt& _Right) const
+ {
+ return (_Right < *this);
+ }
+
+ bool operator<=(const _Myt& _Right) const
+ {
+ return (!(_Right < *this));
+ }
+
+ bool operator>=(const _Myt& _Right) const
+ {
+ return (!(*this < _Right));
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+ static void __cdecl _Xlen()
+ {
+ _Mystring::_Xlen();
+ }
+
+ static void __cdecl _Xran()
+ {
+ _Mystring::_Xran();
+ }
+
+ static void __cdecl _Xinvarg()
+ {
+ _Mystring::_Xinvarg();
+ }
+
+ pointer _Myptr;
+ };
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc> inline
+ _String_const_iterator<_Elem, _Traits, _Alloc> __cdecl operator+(
+ typename _String_const_iterator<_Elem, _Traits, _Alloc>
+ ::difference_type _Off,
+ _String_const_iterator<_Elem, _Traits, _Alloc> _Next)
+ {
+ return (_Next += _Off);
+ }
+
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc>
+ class _String_iterator
+ : public _String_const_iterator<_Elem, _Traits, _Alloc>
+ {
+public:
+ typedef _String_iterator<_Elem, _Traits, _Alloc> _Myt;
+ typedef _String_const_iterator<_Elem, _Traits, _Alloc> _Mybase;
+
+ typedef random_access_iterator_tag iterator_category;
+ typedef _Elem value_type;
+ typedef typename _Alloc::difference_type difference_type;
+ typedef typename _Alloc::pointer pointer;
+ typedef typename _Alloc::reference reference;
+
+ _String_iterator()
+ {
+ }
+
+
+
+
+
+
+
+
+
+
+
+ _String_iterator(pointer _Ptr, const _Container_base *_Pstring)
+ : _Mybase(_Ptr, _Pstring)
+ {
+ }
+
+
+
+
+
+
+
+
+
+
+
+ typedef pointer _Checked_iterator_base_type;
+
+ _Checked_iterator_base_type _Checked_iterator_base() const
+ {
+ return const_cast<pointer>(this->_Myptr);
+ }
+
+ void _Checked_iterator_assign_from_base(_Checked_iterator_base_type _Base)
+ {
+ this->_Myptr = _Base;
+ }
+
+
+ reference operator*() const
+ {
+ return ((reference)**(_Mybase *)this);
+ }
+
+ pointer operator->() const
+ {
+ return (&**this);
+ }
+
+ _Myt& operator++()
+ {
+ ++(*(_Mybase *)this);
+ return (*this);
+ }
+
+ _Myt operator++(int)
+ {
+ _Myt _Tmp = *this;
+ ++*this;
+ return (_Tmp);
+ }
+
+ _Myt& operator--()
+ {
+ --(*(_Mybase *)this);
+ return (*this);
+ }
+
+ _Myt operator--(int)
+ {
+ _Myt _Tmp = *this;
+ --*this;
+ return (_Tmp);
+ }
+
+ _Myt& operator+=(difference_type _Off)
+ {
+ (*(_Mybase *)this) += _Off;
+ return (*this);
+ }
+
+ _Myt operator+(difference_type _Off) const
+ {
+ _Myt _Tmp = *this;
+ return (_Tmp += _Off);
+ }
+
+ _Myt& operator-=(difference_type _Off)
+ {
+ return (*this += -_Off);
+ }
+
+ _Myt operator-(difference_type _Off) const
+ {
+ _Myt _Tmp = *this;
+ return (_Tmp -= _Off);
+ }
+
+ difference_type operator-(const _Mybase& _Right) const
+ {
+ return ((_Mybase)*this - _Right);
+ }
+
+ reference operator[](difference_type _Off) const
+ {
+ return (*(*this + _Off));
+ }
+ };
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc> inline
+ _String_iterator<_Elem, _Traits, _Alloc> operator+(
+ typename _String_iterator<_Elem, _Traits, _Alloc>
+ ::difference_type _Off,
+ _String_iterator<_Elem, _Traits, _Alloc> _Next)
+ {
+ return (_Next += _Off);
+ }
+
+
+class _String_base
+ : public _Container_base
+ {
+public:
+ static void __cdecl _Xlen();
+
+ static void __cdecl _Xran();
+
+ static void __cdecl _Xinvarg();
+ };
+
+
+template<class _Ty,
+ class _Alloc>
+ class _String_val
+ : public _String_base
+ {
+protected:
+ typedef typename _Alloc::template
+ rebind<_Ty>::other _Alty;
+
+ _String_val(_Alty _Al = _Alty())
+ : _Alval(_Al)
+ {
+ }
+
+ _Alty _Alval;
+ };
+
+
+template<class _Elem,
+ class _Traits,
+ class _Ax>
+ class basic_string
+ : public _String_val<_Elem, _Ax>
+ {
+public:
+ typedef basic_string<_Elem, _Traits, _Ax> _Myt;
+ typedef _String_val<_Elem, _Ax> _Mybase;
+ typedef typename _Mybase::_Alty _Alloc;
+ typedef typename _Alloc::size_type size_type;
+ typedef typename _Alloc::difference_type _Dift;
+ typedef _Dift difference_type;
+ typedef typename _Alloc::pointer _Tptr;
+ typedef typename _Alloc::const_pointer _Ctptr;
+ typedef _Tptr pointer;
+ typedef _Ctptr const_pointer;
+ typedef typename _Alloc::reference _Reft;
+ typedef _Reft reference;
+ typedef typename _Alloc::const_reference const_reference;
+ typedef typename _Alloc::value_type value_type;
+
+
+
+ typedef _String_iterator<_Elem, _Traits, _Alloc> iterator;
+ typedef _String_const_iterator<_Elem, _Traits, _Alloc> const_iterator;
+
+
+ friend class _String_const_iterator<_Elem, _Traits, _Alloc>;
+
+ typedef std::reverse_iterator<iterator> reverse_iterator;
+ typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ basic_string()
+ : _Mybase()
+ {
+ _Tidy();
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ explicit basic_string(const _Alloc& _Al)
+ : _Mybase(_Al)
+ {
+ _Tidy();
+ }
+
+ basic_string(const _Myt& _Right)
+ : _Mybase(_Right._Alval)
+ {
+ _Tidy();
+ assign(_Right, 0, npos);
+ }
+
+ basic_string(const _Myt& _Right, size_type _Roff,
+ size_type _Count = npos)
+ : _Mybase()
+ {
+ _Tidy();
+ assign(_Right, _Roff, _Count);
+ }
+
+ basic_string(const _Myt& _Right, size_type _Roff, size_type _Count,
+ const _Alloc& _Al)
+ : _Mybase(_Al)
+ {
+ _Tidy();
+ assign(_Right, _Roff, _Count);
+ }
+
+ basic_string(const _Elem *_Ptr, size_type _Count)
+ : _Mybase()
+ {
+ _Tidy();
+ assign(_Ptr, _Count);
+ }
+
+ basic_string(const _Elem *_Ptr, size_type _Count, const _Alloc& _Al)
+ : _Mybase(_Al)
+ {
+ _Tidy();
+ assign(_Ptr, _Count);
+ }
+
+ basic_string(const _Elem *_Ptr)
+ : _Mybase()
+ {
+ _Tidy();
+ assign(_Ptr);
+ }
+
+ basic_string(const _Elem *_Ptr, const _Alloc& _Al)
+ : _Mybase(_Al)
+ {
+ _Tidy();
+ assign(_Ptr);
+ }
+
+ basic_string(size_type _Count, _Elem _Ch)
+ : _Mybase()
+ {
+ _Tidy();
+ assign(_Count, _Ch);
+ }
+
+ basic_string(size_type _Count, _Elem _Ch, const _Alloc& _Al)
+ : _Mybase(_Al)
+ {
+ _Tidy();
+ assign(_Count, _Ch);
+ }
+
+ template<class _It>
+ basic_string(_It _First, _It _Last)
+ : _Mybase()
+ {
+ _Tidy();
+ _Construct(_First, _Last, _Iter_cat(_First));
+ }
+
+ template<class _It>
+ basic_string(_It _First, _It _Last, const _Alloc& _Al)
+ : _Mybase(_Al)
+ {
+ _Tidy();
+ _Construct(_First, _Last, _Iter_cat(_First));
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ template<class _It>
+ void _Construct(_It _Count,
+ _It _Ch, _Int_iterator_tag)
+ {
+ assign((size_type)_Count, (_Elem)_Ch);
+ }
+
+ template<class _It>
+ void _Construct(_It _First,
+ _It _Last, input_iterator_tag)
+ {
+ try {
+ for (; _First != _Last; ++_First)
+ append((size_type)1, (_Elem)*_First);
+ } catch (...) {
+ _Tidy(true);
+ throw;
+ }
+ }
+
+ template<class _It>
+ void _Construct(_It _First,
+ _It _Last, forward_iterator_tag)
+ {
+
+
+
+
+
+
+
+ size_type _Count = 0;
+ _Distance(_First, _Last, _Count);
+ reserve(_Count);
+
+ try {
+ for (; _First != _Last; ++_First)
+ append((size_type)1, (_Elem)*_First);
+ } catch (...) {
+ _Tidy(true);
+ throw;
+ }
+ }
+
+ basic_string(const_pointer _First, const_pointer _Last)
+ : _Mybase()
+ {
+
+
+
+
+
+
+
+ _Tidy();
+ if (_First != _Last)
+ assign(&*_First, _Last - _First);
+ }
+
+ basic_string(const_iterator _First, const_iterator _Last)
+ : _Mybase()
+ {
+
+
+
+
+
+
+
+ _Tidy();
+ if (_First != _Last)
+ assign(&*_First, _Last - _First);
+ }
+
+ ~basic_string()
+ {
+ _Tidy(true);
+ }
+
+ typedef _Traits traits_type;
+ typedef _Alloc allocator_type;
+
+ static const size_type npos;
+
+ _Myt& operator=(const _Myt& _Right)
+ {
+ return (assign(_Right));
+ }
+
+ _Myt& operator=(const _Elem *_Ptr)
+ {
+ return (assign(_Ptr));
+ }
+
+ _Myt& operator=(_Elem _Ch)
+ {
+ return (assign(1, _Ch));
+ }
+
+ _Myt& operator+=(const _Myt& _Right)
+ {
+ return (append(_Right));
+ }
+
+ _Myt& operator+=(const _Elem *_Ptr)
+ {
+ return (append(_Ptr));
+ }
+
+ _Myt& operator+=(_Elem _Ch)
+ {
+ return (append((size_type)1, _Ch));
+ }
+
+ _Myt& append(const _Myt& _Right)
+ {
+ return (append(_Right, 0, npos));
+ }
+
+ _Myt& append(const _Myt& _Right,
+ size_type _Roff, size_type _Count)
+ {
+ if (_Right.size() < _Roff)
+ _String_base::_Xran();
+ size_type _Num = _Right.size() - _Roff;
+ if (_Num < _Count)
+ _Count = _Num;
+ if (npos - _Mysize <= _Count || _Mysize + _Count < _Mysize)
+ _String_base::_Xlen();
+
+ if (0 < _Count && _Grow(_Num = _Mysize + _Count))
+ {
+ _Traits_helper::copy_s<_Traits>(_Myptr() + _Mysize, _Myres - _Mysize,
+ _Right._Myptr() + _Roff, _Count);
+ _Eos(_Num);
+ }
+ return (*this);
+ }
+
+ _Myt& append(const _Elem *_Ptr, size_type _Count)
+ {
+ if (_Inside(_Ptr))
+ return (append(*this, _Ptr - _Myptr(), _Count));
+ if (npos - _Mysize <= _Count || _Mysize + _Count < _Mysize)
+ _String_base::_Xlen();
+
+ size_type _Num;
+ if (0 < _Count && _Grow(_Num = _Mysize + _Count))
+ {
+ _Traits_helper::copy_s<_Traits>(_Myptr() + _Mysize, _Myres - _Mysize, _Ptr, _Count);
+ _Eos(_Num);
+ }
+ return (*this);
+ }
+
+ _Myt& append(const _Elem *_Ptr)
+ {
+ return (append(_Ptr, _Traits::length(_Ptr)));
+ }
+
+ _Myt& append(size_type _Count, _Elem _Ch)
+ {
+ if (npos - _Mysize <= _Count)
+ _String_base::_Xlen();
+
+ size_type _Num;
+ if (0 < _Count && _Grow(_Num = _Mysize + _Count))
+ {
+ _Chassign(_Mysize, _Count, _Ch);
+ _Eos(_Num);
+ }
+ return (*this);
+ }
+
+ template<class _It>
+ _Myt& append(_It _First, _It _Last)
+ {
+ return (_Append(_First, _Last, _Iter_cat(_First)));
+ }
+
+ template<class _It>
+ _Myt& _Append(_It _Count, _It _Ch, _Int_iterator_tag)
+ {
+ return (append((size_type)_Count, (_Elem)_Ch));
+ }
+
+ template<class _It>
+ _Myt& _Append(_It _First, _It _Last, input_iterator_tag)
+ {
+ return (replace(end(), end(), _First, _Last));
+ }
+
+ _Myt& append(const_pointer _First, const_pointer _Last)
+ {
+ return (replace(end(), end(), _First, _Last));
+ }
+
+ _Myt& append(const_iterator _First, const_iterator _Last)
+ {
+ return (replace(end(), end(), _First, _Last));
+ }
+
+ _Myt& assign(const _Myt& _Right)
+ {
+ return (assign(_Right, 0, npos));
+ }
+
+ _Myt& assign(const _Myt& _Right,
+ size_type _Roff, size_type _Count)
+ {
+ if (_Right.size() < _Roff)
+ _String_base::_Xran();
+ size_type _Num = _Right.size() - _Roff;
+ if (_Count < _Num)
+ _Num = _Count;
+
+ if (this == &_Right)
+ erase((size_type)(_Roff + _Num)), erase(0, _Roff);
+ else if (_Grow(_Num))
+ {
+ _Traits_helper::copy_s<_Traits>(_Myptr(), _Myres, _Right._Myptr() + _Roff, _Num);
+ _Eos(_Num);
+ }
+ return (*this);
+ }
+
+ _Myt& assign(const _Elem *_Ptr, size_type _Num)
+ {
+ if (_Inside(_Ptr))
+ return (assign(*this, _Ptr - _Myptr(), _Num));
+
+ if (_Grow(_Num))
+ {
+ _Traits_helper::copy_s<_Traits>(_Myptr(), _Myres, _Ptr, _Num);
+ _Eos(_Num);
+ }
+ return (*this);
+ }
+
+ _Myt& assign(const _Elem *_Ptr)
+ {
+ return (assign(_Ptr, _Traits::length(_Ptr)));
+ }
+
+ _Myt& assign(size_type _Count, _Elem _Ch)
+ {
+ if (_Count == npos)
+ _String_base::_Xlen();
+
+ if (_Grow(_Count))
+ {
+ _Chassign(0, _Count, _Ch);
+ _Eos(_Count);
+ }
+ return (*this);
+ }
+
+ template<class _It>
+ _Myt& assign(_It _First, _It _Last)
+ {
+ return (_Assign(_First, _Last, _Iter_cat(_First)));
+ }
+
+ template<class _It>
+ _Myt& _Assign(_It _Count, _It _Ch, _Int_iterator_tag)
+ {
+ return (assign((size_type)_Count, (_Elem)_Ch));
+ }
+
+ template<class _It>
+ _Myt& _Assign(_It _First, _It _Last, input_iterator_tag)
+ {
+ return (replace(begin(), end(), _First, _Last));
+ }
+
+ _Myt& assign(const_pointer _First, const_pointer _Last)
+ {
+ return (replace(begin(), end(), _First, _Last));
+ }
+
+ _Myt& assign(const_iterator _First, const_iterator _Last)
+ {
+ return (replace(begin(), end(), _First, _Last));
+ }
+
+ _Myt& insert(size_type _Off, const _Myt& _Right)
+ {
+ return (insert(_Off, _Right, 0, npos));
+ }
+
+ _Myt& insert(size_type _Off,
+ const _Myt& _Right, size_type _Roff, size_type _Count)
+ {
+ if (_Mysize < _Off || _Right.size() < _Roff)
+ _String_base::_Xran();
+ size_type _Num = _Right.size() - _Roff;
+ if (_Num < _Count)
+ _Count = _Num;
+ if (npos - _Mysize <= _Count)
+ _String_base::_Xlen();
+
+ if (0 < _Count && _Grow(_Num = _Mysize + _Count))
+ {
+ _Traits_helper::move_s<_Traits>(_Myptr() + _Off + _Count, _Myres - _Off - _Count,
+ _Myptr() + _Off, _Mysize - _Off);
+ if (this == &_Right)
+ _Traits_helper::move_s<_Traits>(_Myptr() + _Off, _Myres - _Off,
+ _Myptr() + (_Off < _Roff ? _Roff + _Count : _Roff),
+ _Count);
+ else
+ _Traits_helper::copy_s<_Traits>(_Myptr() + _Off, _Myres - _Off,
+ _Right._Myptr() + _Roff, _Count);
+ _Eos(_Num);
+ }
+ return (*this);
+ }
+
+ _Myt& insert(size_type _Off,
+ const _Elem *_Ptr, size_type _Count)
+ {
+ if (_Inside(_Ptr))
+ return (insert(_Off, *this,
+ _Ptr - _Myptr(), _Count));
+ if (_Mysize < _Off)
+ _String_base::_Xran();
+ if (npos - _Mysize <= _Count)
+ _String_base::_Xlen();
+ size_type _Num;
+ if (0 < _Count && _Grow(_Num = _Mysize + _Count))
+ {
+ _Traits_helper::move_s<_Traits>(_Myptr() + _Off + _Count, _Myres - _Off - _Count,
+ _Myptr() + _Off, _Mysize - _Off);
+ _Traits_helper::copy_s<_Traits>(_Myptr() + _Off, _Myres - _Off, _Ptr, _Count);
+ _Eos(_Num);
+ }
+ return (*this);
+ }
+
+ _Myt& insert(size_type _Off, const _Elem *_Ptr)
+ {
+ return (insert(_Off, _Ptr, _Traits::length(_Ptr)));
+ }
+
+ _Myt& insert(size_type _Off,
+ size_type _Count, _Elem _Ch)
+ {
+ if (_Mysize < _Off)
+ _String_base::_Xran();
+ if (npos - _Mysize <= _Count)
+ _String_base::_Xlen();
+ size_type _Num;
+ if (0 < _Count && _Grow(_Num = _Mysize + _Count))
+ {
+ _Traits_helper::move_s<_Traits>(_Myptr() + _Off + _Count, _Myres - _Off - _Count,
+ _Myptr() + _Off, _Mysize - _Off);
+ _Chassign(_Off, _Count, _Ch);
+ _Eos(_Num);
+ }
+ return (*this);
+ }
+
+ iterator insert(iterator _Where)
+ {
+ return (insert(_Where, _Elem()));
+ }
+
+ iterator insert(iterator _Where, _Elem _Ch)
+ {
+ size_type _Off = _Pdif(_Where, begin());
+ insert(_Off, 1, _Ch);
+ return (begin() + _Off);
+ }
+
+ void insert(iterator _Where, size_type _Count, _Elem _Ch)
+ {
+ size_type _Off = _Pdif(_Where, begin());
+ insert(_Off, _Count, _Ch);
+ }
+
+ template<class _It>
+ void insert(iterator _Where, _It _First, _It _Last)
+ {
+ _Insert(_Where, _First, _Last, _Iter_cat(_First));
+ }
+
+ template<class _It>
+ void _Insert(iterator _Where, _It _Count, _It _Ch,
+ _Int_iterator_tag)
+ {
+ insert(_Where, (size_type)_Count, (_Elem)_Ch);
+ }
+
+ template<class _It>
+ void _Insert(iterator _Where, _It _First, _It _Last,
+ input_iterator_tag)
+ {
+ replace(_Where, _Where, _First, _Last);
+ }
+
+ void insert(iterator _Where, const_pointer _First, const_pointer _Last)
+ {
+ replace(_Where, _Where, _First, _Last);
+ }
+
+ void insert(iterator _Where, const_iterator _First, const_iterator _Last)
+ {
+ replace(_Where, _Where, _First, _Last);
+ }
+
+ _Myt& erase(size_type _Off = 0,
+ size_type _Count = npos)
+ {
+ if (_Mysize < _Off)
+ _String_base::_Xran();
+ if (_Mysize - _Off < _Count)
+ _Count = _Mysize - _Off;
+ if (0 < _Count)
+ {
+ _Traits_helper::move_s<_Traits>(_Myptr() + _Off, _Myres - _Off, _Myptr() + _Off + _Count,
+ _Mysize - _Off - _Count);
+ size_type _Newsize = _Mysize - _Count;
+ _Eos(_Newsize);
+ }
+ return (*this);
+ }
+
+ iterator erase(iterator _Where)
+ {
+ size_type _Count = _Pdif(_Where, begin());
+ erase(_Count, 1);
+ return (iterator(_Myptr() + _Count, this));
+ }
+
+ iterator erase(iterator _First, iterator _Last)
+ {
+ size_type _Count = _Pdif(_First, begin());
+ erase(_Count, _Pdif(_Last, _First));
+ return (iterator(_Myptr() + _Count, this));
+ }
+
+ void clear()
+ {
+ erase(begin(), end());
+ }
+
+ _Myt& replace(size_type _Off, size_type _N0, const _Myt& _Right)
+ {
+ return (replace(_Off, _N0, _Right, 0, npos));
+ }
+
+ _Myt& replace(size_type _Off,
+ size_type _N0, const _Myt& _Right, size_type _Roff, size_type _Count)
+ {
+ if (_Mysize < _Off || _Right.size() < _Roff)
+ _String_base::_Xran();
+ if (_Mysize - _Off < _N0)
+ _N0 = _Mysize - _Off;
+ size_type _Num = _Right.size() - _Roff;
+ if (_Num < _Count)
+ _Count = _Num;
+ if (npos - _Count <= _Mysize - _N0)
+ _String_base::_Xlen();
+
+ size_type _Nm = _Mysize - _N0 - _Off;
+ size_type _Newsize = _Mysize + _Count - _N0;
+ if (_Mysize < _Newsize)
+ _Grow(_Newsize);
+
+ if (this != &_Right)
+ {
+ _Traits_helper::move_s<_Traits>(_Myptr() + _Off + _Count, _Myres - _Off - _Count,
+ _Myptr() + _Off + _N0, _Nm);
+ _Traits_helper::copy_s<_Traits>(_Myptr() + _Off, _Myres - _Off,
+ _Right._Myptr() + _Roff, _Count);
+ }
+ else if (_Count <= _N0)
+ {
+ _Traits_helper::move_s<_Traits>(_Myptr() + _Off, _Myres - _Off,
+ _Myptr() + _Roff, _Count);
+ _Traits_helper::move_s<_Traits>(_Myptr() + _Off + _Count, _Myres - _Off - _Count,
+ _Myptr() + _Off + _N0, _Nm);
+ }
+ else if (_Roff <= _Off)
+ {
+ _Traits_helper::move_s<_Traits>(_Myptr() + _Off + _Count, _Myres - _Off - _Count,
+ _Myptr() + _Off + _N0, _Nm);
+ _Traits_helper::move_s<_Traits>(_Myptr() + _Off, _Myres - _Off,
+ _Myptr() + _Roff, _Count);
+ }
+ else if (_Off + _N0 <= _Roff)
+ {
+ _Traits_helper::move_s<_Traits>(_Myptr() + _Off + _Count, _Myres - _Off - _Count,
+ _Myptr() + _Off + _N0, _Nm);
+ _Traits_helper::move_s<_Traits>(_Myptr() + _Off, _Myres - _Off,
+ _Myptr() + (_Roff + _Count - _N0), _Count);
+ }
+ else
+ {
+ _Traits_helper::move_s<_Traits>(_Myptr() + _Off, _Myres - _Off,
+ _Myptr() + _Roff, _N0);
+ _Traits_helper::move_s<_Traits>(_Myptr() + _Off + _Count, _Myres - _Off - _Count,
+ _Myptr() + _Off + _N0, _Nm);
+ _Traits_helper::move_s<_Traits>(_Myptr() + _Off + _N0, _Myres - _Off - _N0, _Myptr() + _Roff + _Count,
+ _Count - _N0);
+ }
+
+ _Eos(_Newsize);
+ return (*this);
+ }
+
+ _Myt& replace(size_type _Off,
+ size_type _N0, const _Elem *_Ptr, size_type _Count)
+ {
+ if (_Inside(_Ptr))
+ return (replace(_Off, _N0, *this,
+ _Ptr - _Myptr(), _Count));
+ if (_Mysize < _Off)
+ _String_base::_Xran();
+ if (_Mysize - _Off < _N0)
+ _N0 = _Mysize - _Off;
+ if (npos - _Count <= _Mysize - _N0)
+ _String_base::_Xlen();
+ size_type _Nm = _Mysize - _N0 - _Off;
+
+ if (_Count < _N0)
+ _Traits_helper::move_s<_Traits>(_Myptr() + _Off + _Count, _Myres - _Off - _Count,
+ _Myptr() + _Off + _N0, _Nm);
+ size_type _Num;
+ if ((0 < _Count || 0 < _N0) && _Grow(_Num = _Mysize + _Count - _N0))
+ {
+ if (_N0 < _Count)
+ _Traits_helper::move_s<_Traits>(_Myptr() + _Off + _Count, _Myres - _Off - _Count,
+ _Myptr() + _Off + _N0, _Nm);
+ _Traits_helper::copy_s<_Traits>(_Myptr() + _Off, _Myres - _Off, _Ptr, _Count);
+ _Eos(_Num);
+ }
+ return (*this);
+ }
+
+ _Myt& replace(size_type _Off, size_type _N0, const _Elem *_Ptr)
+ {
+ return (replace(_Off, _N0, _Ptr, _Traits::length(_Ptr)));
+ }
+
+ _Myt& replace(size_type _Off,
+ size_type _N0, size_type _Count, _Elem _Ch)
+ {
+ if (_Mysize < _Off)
+ _String_base::_Xran();
+ if (_Mysize - _Off < _N0)
+ _N0 = _Mysize - _Off;
+ if (npos - _Count <= _Mysize - _N0)
+ _String_base::_Xlen();
+ size_type _Nm = _Mysize - _N0 - _Off;
+
+ if (_Count < _N0)
+ _Traits_helper::move_s<_Traits>(_Myptr() + _Off + _Count, _Myres - _Off - _Count,
+ _Myptr() + _Off + _N0, _Nm);
+ size_type _Num;
+ if ((0 < _Count || 0 < _N0) && _Grow(_Num = _Mysize + _Count - _N0))
+ {
+ if (_N0 < _Count)
+ _Traits_helper::move_s<_Traits>(_Myptr() + _Off + _Count, _Myres - _Off - _Count,
+ _Myptr() + _Off + _N0, _Nm);
+ _Chassign(_Off, _Count, _Ch);
+ _Eos(_Num);
+ }
+ return (*this);
+ }
+
+ _Myt& replace(iterator _First, iterator _Last, const _Myt& _Right)
+ {
+ return (replace(
+ _Pdif(_First, begin()), _Pdif(_Last, _First), _Right));
+ }
+
+ _Myt& replace(iterator _First, iterator _Last, const _Elem *_Ptr,
+ size_type _Count)
+ {
+ return (replace(
+ _Pdif(_First, begin()), _Pdif(_Last, _First), _Ptr, _Count));
+ }
+
+ _Myt& replace(iterator _First, iterator _Last, const _Elem *_Ptr)
+ {
+ return (replace(
+ _Pdif(_First, begin()), _Pdif(_Last, _First), _Ptr));
+ }
+
+ _Myt& replace(iterator _First, iterator _Last,
+ size_type _Count, _Elem _Ch)
+ {
+ return (replace(
+ _Pdif(_First, begin()), _Pdif(_Last, _First), _Count, _Ch));
+ }
+
+ template<class _It>
+ _Myt& replace(iterator _First, iterator _Last,
+ _It _First2, _It _Last2)
+ {
+ return (_Replace(_First, _Last,
+ _First2, _Last2, _Iter_cat(_First2)));
+ }
+
+ template<class _It>
+ _Myt& _Replace(iterator _First, iterator _Last,
+ _It _Count, _It _Ch, _Int_iterator_tag)
+ {
+ return (replace(_First, _Last, (size_type)_Count, (_Elem)_Ch));
+ }
+
+ template<class _It>
+ _Myt& _Replace(iterator _First, iterator _Last,
+ _It _First2, _It _Last2, input_iterator_tag)
+ {
+ _Myt _Right(_First2, _Last2);
+ replace(_First, _Last, _Right);
+ return (*this);
+ }
+
+ _Myt& replace(iterator _First, iterator _Last,
+ const_pointer _First2, const_pointer _Last2)
+ {
+ if (_First2 == _Last2)
+ erase(_Pdif(_First, begin()), _Pdif(_Last, _First));
+ else
+ replace(_Pdif(_First, begin()), _Pdif(_Last, _First),
+ &*_First2, _Last2 - _First2);
+ return (*this);
+ }
+
+ _Myt& replace(iterator _First, iterator _Last,
+ const_iterator _First2, const_iterator _Last2)
+ {
+ if (_First2 == _Last2)
+ erase(_Pdif(_First, begin()), _Pdif(_Last, _First));
+ else
+ replace(_Pdif(_First, begin()), _Pdif(_Last, _First),
+ &*_First2, _Last2 - _First2);
+ return (*this);
+ }
+
+ iterator begin()
+ {
+ return (iterator(_Myptr(), this));
+ }
+
+ const_iterator begin() const
+ {
+ return (const_iterator(_Myptr(), this));
+ }
+
+ iterator end()
+ {
+ return (iterator(_Myptr() + _Mysize, this));
+ }
+
+ const_iterator end() const
+ {
+ return (const_iterator(_Myptr() + _Mysize, this));
+ }
+
+ reverse_iterator rbegin()
+ {
+ return (reverse_iterator(end()));
+ }
+
+ const_reverse_iterator rbegin() const
+ {
+ return (const_reverse_iterator(end()));
+ }
+
+ reverse_iterator rend()
+ {
+ return (reverse_iterator(begin()));
+ }
+
+ const_reverse_iterator rend() const
+ {
+ return (const_reverse_iterator(begin()));
+ }
+
+ reference at(size_type _Off)
+ {
+ if (_Mysize <= _Off)
+ _String_base::_Xran();
+ return (_Myptr()[_Off]);
+ }
+
+ const_reference at(size_type _Off) const
+ {
+ if (_Mysize <= _Off)
+ _String_base::_Xran();
+ return (_Myptr()[_Off]);
+ }
+
+
+
+ reference operator[](size_type _Off)
+ {
+
+
+
+
+
+
+
+
+
+
+
+
+ { if (!(_Off <= _Mysize)) { ((void)0); ::_invalid_parameter_noinfo(); } ; };
+
+
+ return (_Myptr()[_Off]);
+ }
+
+ const_reference operator[](size_type _Off) const
+ {
+
+
+
+
+
+
+
+
+
+
+
+
+ { if (!(_Off <= _Mysize)) { ((void)0); ::_invalid_parameter_noinfo(); } ; };
+
+
+ return (_Myptr()[_Off]);
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ void push_back(_Elem _Ch)
+ {
+ insert(end(), _Ch);
+ }
+
+ const _Elem * c_str() const
+ {
+ return (_Myptr());
+ }
+
+ const _Elem * data() const
+ {
+ return (c_str());
+ }
+
+ size_type length() const
+ {
+ return (_Mysize);
+ }
+
+ size_type size() const
+ {
+ return (_Mysize);
+ }
+
+ size_type max_size() const
+ {
+ size_type _Num = _Mybase::_Alval.max_size();
+ return (_Num <= 1 ? 1 : _Num - 1);
+ }
+
+ void resize(size_type _Newsize)
+ {
+ resize(_Newsize, _Elem());
+ }
+
+ void resize(size_type _Newsize, _Elem _Ch)
+ {
+ if (_Newsize <= _Mysize)
+ erase(_Newsize);
+ else
+ append(_Newsize - _Mysize, _Ch);
+ }
+
+ size_type capacity() const
+ {
+ return (_Myres);
+ }
+
+ void reserve(size_type _Newcap = 0)
+ {
+ if (_Mysize <= _Newcap && _Myres != _Newcap)
+ {
+ size_type _Size = _Mysize;
+ if (_Grow(_Newcap, true))
+ _Eos(_Size);
+ }
+ }
+
+ bool empty() const
+ {
+ return (_Mysize == 0);
+ }
+
+ __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
+ size_type copy(_Elem *_Dest,
+ size_type _Count, size_type _Off = 0) const
+ {
+
+ return _Copy_s(_Dest, _Count, _Count, _Off);
+ }
+
+ size_type _Copy_s(_Elem *_Dest, size_type _Dest_size,
+ size_type _Count, size_type _Off = 0) const
+ {
+ ;
+ if (_Mysize < _Off)
+ _String_base::_Xran();
+ if (_Mysize - _Off < _Count)
+ _Count = _Mysize - _Off;
+ _Traits_helper::copy_s<_Traits>(_Dest, _Dest_size, _Myptr() + _Off, _Count);
+ return (_Count);
+ }
+
+ void swap(_Myt& _Right)
+ {
+ if (_Mybase::_Alval == _Right._Alval)
+ {
+
+
+
+
+
+ _Bxty _Tbx = _Bx;
+ _Bx = _Right._Bx, _Right._Bx = _Tbx;
+
+ size_type _Tlen = _Mysize;
+ _Mysize = _Right._Mysize, _Right._Mysize = _Tlen;
+
+ size_type _Tres = _Myres;
+ _Myres = _Right._Myres, _Right._Myres = _Tres;
+ }
+ else
+ {
+ _Myt _Tmp = *this; *this = _Right, _Right = _Tmp;
+ }
+ }
+
+ size_type find(const _Myt& _Right, size_type _Off = 0) const
+ {
+ return (find(_Right._Myptr(), _Off, _Right.size()));
+ }
+
+ size_type find(const _Elem *_Ptr,
+ size_type _Off, size_type _Count) const
+ {
+ ;
+ if (_Count == 0 && _Off <= _Mysize)
+ return (_Off);
+
+ size_type _Nm;
+ if (_Off < _Mysize && _Count <= (_Nm = _Mysize - _Off))
+ {
+ const _Elem *_Uptr, *_Vptr;
+ for (_Nm -= _Count - 1, _Vptr = _Myptr() + _Off;
+ (_Uptr = _Traits::find(_Vptr, _Nm, *_Ptr)) != 0;
+ _Nm -= _Uptr - _Vptr + 1, _Vptr = _Uptr + 1)
+ if (_Traits::compare(_Uptr, _Ptr, _Count) == 0)
+ return (_Uptr - _Myptr());
+ }
+
+ return (npos);
+ }
+
+ size_type find(const _Elem *_Ptr, size_type _Off = 0) const
+ {
+ return (find(_Ptr, _Off, _Traits::length(_Ptr)));
+ }
+
+ size_type find(_Elem _Ch, size_type _Off = 0) const
+ {
+ return (find((const _Elem *)&_Ch, _Off, 1));
+ }
+
+ size_type rfind(const _Myt& _Right, size_type _Off = npos) const
+ {
+ return (rfind(_Right._Myptr(), _Off, _Right.size()));
+ }
+
+ size_type rfind(const _Elem *_Ptr,
+ size_type _Off, size_type _Count) const
+ {
+ ;
+ if (_Count == 0)
+ return (_Off < _Mysize ? _Off : _Mysize);
+ if (_Count <= _Mysize)
+ {
+ const _Elem *_Uptr = _Myptr() +
+ (_Off < _Mysize - _Count ? _Off : _Mysize - _Count);
+ for (; ; --_Uptr)
+ if (_Traits::eq(*_Uptr, *_Ptr)
+ && _Traits::compare(_Uptr, _Ptr, _Count) == 0)
+ return (_Uptr - _Myptr());
+ else if (_Uptr == _Myptr())
+ break;
+ }
+
+ return (npos);
+ }
+
+ size_type rfind(const _Elem *_Ptr, size_type _Off = npos) const
+ {
+ return (rfind(_Ptr, _Off, _Traits::length(_Ptr)));
+ }
+
+ size_type rfind(_Elem _Ch, size_type _Off = npos) const
+ {
+ return (rfind((const _Elem *)&_Ch, _Off, 1));
+ }
+
+ size_type find_first_of(const _Myt& _Right,
+ size_type _Off = 0) const
+ {
+ return (find_first_of(_Right._Myptr(), _Off, _Right.size()));
+ }
+
+ size_type find_first_of(const _Elem *_Ptr,
+ size_type _Off, size_type _Count) const
+ {
+ ;
+ if (0 < _Count && _Off < _Mysize)
+ {
+ const _Elem *const _Vptr = _Myptr() + _Mysize;
+ for (const _Elem *_Uptr = _Myptr() + _Off; _Uptr < _Vptr; ++_Uptr)
+ if (_Traits::find(_Ptr, _Count, *_Uptr) != 0)
+ return (_Uptr - _Myptr());
+ }
+
+ return (npos);
+ }
+
+ size_type find_first_of(const _Elem *_Ptr, size_type _Off = 0) const
+ {
+ return (find_first_of(_Ptr, _Off, _Traits::length(_Ptr)));
+ }
+
+ size_type find_first_of(_Elem _Ch, size_type _Off = 0) const
+ {
+ return (find((const _Elem *)&_Ch, _Off, 1));
+ }
+
+ size_type find_last_of(const _Myt& _Right,
+ size_type _Off = npos) const
+ {
+ return (find_last_of(_Right._Myptr(), _Off, _Right.size()));
+ }
+
+ size_type find_last_of(const _Elem *_Ptr,
+ size_type _Off, size_type _Count) const
+ {
+ ;
+ if (0 < _Count && 0 < _Mysize)
+ for (const _Elem *_Uptr = _Myptr()
+ + (_Off < _Mysize ? _Off : _Mysize - 1); ; --_Uptr)
+ if (_Traits::find(_Ptr, _Count, *_Uptr) != 0)
+ return (_Uptr - _Myptr());
+ else if (_Uptr == _Myptr())
+ break;
+
+ return (npos);
+ }
+
+ size_type find_last_of(const _Elem *_Ptr,
+ size_type _Off = npos) const
+ {
+ return (find_last_of(_Ptr, _Off, _Traits::length(_Ptr)));
+ }
+
+ size_type find_last_of(_Elem _Ch, size_type _Off = npos) const
+ {
+ return (rfind((const _Elem *)&_Ch, _Off, 1));
+ }
+
+ size_type find_first_not_of(const _Myt& _Right,
+ size_type _Off = 0) const
+ {
+ return (find_first_not_of(_Right._Myptr(), _Off,
+ _Right.size()));
+ }
+
+ size_type find_first_not_of(const _Elem *_Ptr,
+ size_type _Off, size_type _Count) const
+ {
+ ;
+ if (_Off < _Mysize)
+ {
+ const _Elem *const _Vptr = _Myptr() + _Mysize;
+ for (const _Elem *_Uptr = _Myptr() + _Off; _Uptr < _Vptr; ++_Uptr)
+ if (_Traits::find(_Ptr, _Count, *_Uptr) == 0)
+ return (_Uptr - _Myptr());
+ }
+ return (npos);
+ }
+
+ size_type find_first_not_of(const _Elem *_Ptr,
+ size_type _Off = 0) const
+ {
+ return (find_first_not_of(_Ptr, _Off, _Traits::length(_Ptr)));
+ }
+
+ size_type find_first_not_of(_Elem _Ch, size_type _Off = 0) const
+ {
+ return (find_first_not_of((const _Elem *)&_Ch, _Off, 1));
+ }
+
+ size_type find_last_not_of(const _Myt& _Right,
+ size_type _Off = npos) const
+ {
+ return (find_last_not_of(_Right._Myptr(), _Off, _Right.size()));
+ }
+
+ size_type find_last_not_of(const _Elem *_Ptr,
+ size_type _Off, size_type _Count) const
+ {
+ ;
+ if (0 < _Mysize)
+ for (const _Elem *_Uptr = _Myptr()
+ + (_Off < _Mysize ? _Off : _Mysize - 1); ; --_Uptr)
+ if (_Traits::find(_Ptr, _Count, *_Uptr) == 0)
+ return (_Uptr - _Myptr());
+ else if (_Uptr == _Myptr())
+ break;
+ return (npos);
+ }
+
+ size_type find_last_not_of(const _Elem *_Ptr,
+ size_type _Off = npos) const
+ {
+ return (find_last_not_of(_Ptr, _Off, _Traits::length(_Ptr)));
+ }
+
+ size_type find_last_not_of(_Elem _Ch, size_type _Off = npos) const
+ {
+ return (find_last_not_of((const _Elem *)&_Ch, _Off, 1));
+ }
+
+ _Myt substr(size_type _Off = 0, size_type _Count = npos) const
+ {
+ return (_Myt(*this, _Off, _Count));
+ }
+
+ int compare(const _Myt& _Right) const
+ {
+ return (compare(0, _Mysize, _Right._Myptr(), _Right.size()));
+ }
+
+ int compare(size_type _Off, size_type _N0,
+ const _Myt& _Right) const
+ {
+ return (compare(_Off, _N0, _Right, 0, npos));
+ }
+
+ int compare(size_type _Off,
+ size_type _N0, const _Myt& _Right,
+ size_type _Roff, size_type _Count) const
+ {
+ if (_Right.size() < _Roff)
+ _String_base::_Xran();
+ if (_Right._Mysize - _Roff < _Count)
+ _Count = _Right._Mysize - _Roff;
+ return (compare(_Off, _N0, _Right._Myptr() + _Roff, _Count));
+ }
+
+ int compare(const _Elem *_Ptr) const
+ {
+ return (compare(0, _Mysize, _Ptr, _Traits::length(_Ptr)));
+ }
+
+ int compare(size_type _Off, size_type _N0, const _Elem *_Ptr) const
+ {
+ return (compare(_Off, _N0, _Ptr, _Traits::length(_Ptr)));
+ }
+
+ int compare(size_type _Off,
+ size_type _N0, const _Elem *_Ptr, size_type _Count) const
+ {
+ ;
+ if (_Mysize < _Off)
+ _String_base::_Xran();
+ if (_Mysize - _Off < _N0)
+ _N0 = _Mysize - _Off;
+
+ size_type _Ans = _Traits::compare(_Myptr() + _Off, _Ptr,
+ _N0 < _Count ? _N0 : _Count);
+ return (_Ans != 0 ? (int)_Ans : _N0 < _Count ? -1
+ : _N0 == _Count ? 0 : +1);
+ }
+
+ allocator_type get_allocator() const
+ {
+ return (_Mybase::_Alval);
+ }
+
+ enum
+ {
+ _BUF_SIZE = 16 / sizeof (_Elem) < 1 ? 1
+ : 16 / sizeof(_Elem)};
+
+protected:
+ enum
+ {
+ _ALLOC_MASK = sizeof (_Elem) <= 1 ? 15
+ : sizeof (_Elem) <= 2 ? 7
+ : sizeof (_Elem) <= 4 ? 3
+ : sizeof (_Elem) <= 8 ? 1 : 0};
+
+ void _Chassign(size_type _Off, size_type _Count, _Elem _Ch)
+ {
+ if (_Count == 1)
+ _Traits::assign(*(_Myptr() + _Off), _Ch);
+ else
+ _Traits::assign(_Myptr() + _Off, _Count, _Ch);
+ }
+
+ void _Copy(size_type _Newsize, size_type _Oldlen)
+ {
+ size_type _Newres = _Newsize | _ALLOC_MASK;
+ if (max_size() < _Newres)
+ _Newres = _Newsize;
+ else if (_Newres / 3 < _Myres / 2
+ && _Myres <= max_size() - _Myres / 2)
+ _Newres = _Myres + _Myres / 2;
+ _Elem *_Ptr = 0;
+
+ try {
+ _Ptr = _Mybase::_Alval.allocate(_Newres + 1);
+ } catch (...) {
+ _Newres = _Newsize;
+ try {
+ _Ptr = _Mybase::_Alval.allocate(_Newres + 1);
+ } catch (...) {
+ _Tidy(true);
+ throw;
+ }
+ }
+
+ if (0 < _Oldlen)
+ _Traits_helper::copy_s<_Traits>(_Ptr, _Newres + 1, _Myptr(), _Oldlen);
+ _Tidy(true);
+ _Bx._Ptr = _Ptr;
+ _Myres = _Newres;
+ _Eos(_Oldlen);
+ }
+
+ void _Eos(size_type _Newsize)
+ {
+ _Traits::assign(_Myptr()[_Mysize = _Newsize], _Elem());
+ }
+
+ bool _Grow(size_type _Newsize,
+ bool _Trim = false)
+ {
+ if (max_size() < _Newsize)
+ _String_base::_Xlen();
+ if (_Myres < _Newsize)
+ _Copy(_Newsize, _Mysize);
+ else if (_Trim && _Newsize < _BUF_SIZE)
+ _Tidy(true,
+ _Newsize < _Mysize ? _Newsize : _Mysize);
+ else if (_Newsize == 0)
+ _Eos(0);
+ return (0 < _Newsize);
+ }
+
+ bool _Inside(const _Elem *_Ptr)
+ {
+ ;
+ if (_Ptr < _Myptr() || _Myptr() + _Mysize <= _Ptr)
+ return (false);
+ else
+ return (true);
+ }
+
+ static size_type __cdecl _Pdif(const_iterator _P2,
+ const_iterator _P1)
+ {
+ return ((_P2)._Myptr == 0 ? 0 : _P2 - _P1);
+ }
+
+ void _Tidy(bool _Built = false,
+ size_type _Newsize = 0)
+ {
+ if (!_Built)
+ ;
+ else if (_BUF_SIZE <= _Myres)
+ {
+ _Elem *_Ptr = _Bx._Ptr;
+ if (0 < _Newsize)
+ _Traits_helper::copy_s<_Traits>(_Bx._Buf, _BUF_SIZE, _Ptr, _Newsize);
+ _Mybase::_Alval.deallocate(_Ptr, _Myres + 1);
+ }
+ _Myres = _BUF_SIZE - 1;
+ _Eos(_Newsize);
+ }
+
+ union _Bxty
+ {
+ _Elem _Buf[_BUF_SIZE];
+ _Elem *_Ptr;
+ } _Bx;
+
+ _Elem * _Myptr()
+ {
+ return (_BUF_SIZE <= _Myres ? _Bx._Ptr : _Bx._Buf);
+ }
+
+ const _Elem * _Myptr() const
+ {
+ return (_BUF_SIZE <= _Myres ? _Bx._Ptr : _Bx._Buf);
+ }
+
+ size_type _Mysize;
+ size_type _Myres;
+ };
+
+
+template<class _Elem, class _Traits, class _Ax>
+ class _Move_operation_category<basic_string<_Elem, _Traits, _Ax> >
+ {
+ public:
+ typedef _Swap_move_tag _Move_cat;
+ };
+
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc>
+ const typename basic_string<_Elem, _Traits, _Alloc>::size_type
+ basic_string<_Elem, _Traits, _Alloc>::npos =
+ (typename basic_string<_Elem, _Traits, _Alloc>::size_type)(-1);
+
+
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc> inline
+ void __cdecl swap(basic_string<_Elem, _Traits, _Alloc>& _Left,
+ basic_string<_Elem, _Traits, _Alloc>& _Right)
+ {
+ _Left.swap(_Right);
+ }
+
+typedef basic_string<char, char_traits<char>, allocator<char> >
+ string;
+typedef basic_string<wchar_t, char_traits<wchar_t>,
+ allocator<wchar_t> > wstring;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
+
+ #pragma warning(default: 4251)
+#pragma warning(pop)
+#pragma pack(pop)
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma pack(push,8)
+#pragma warning(push,3)
+
+
+namespace std {
+
+
+
+
+
+
+class logic_error
+ : public std:: exception
+ {
+public:
+ explicit logic_error(const string& _Message)
+ : _Str(_Message)
+ {
+ }
+
+ virtual ~logic_error() throw ()
+ {
+ }
+
+ virtual const char * what() const throw ()
+ {
+ return (_Str.c_str());
+ }
+
+
+
+
+
+
+
+
+
+private:
+ string _Str;
+ };
+
+
+class domain_error
+ : public logic_error
+ {
+public:
+ explicit domain_error(const string& _Message)
+ : logic_error(_Message)
+ {
+ }
+
+ virtual ~domain_error() throw ()
+ {
+ }
+
+
+
+
+
+
+
+
+
+ };
+
+
+class invalid_argument
+ : public logic_error
+ {
+public:
+ explicit invalid_argument(const string& _Message)
+ : logic_error(_Message)
+ {
+ }
+
+ virtual ~invalid_argument() throw ()
+ {
+ }
+
+
+
+
+
+
+
+
+
+ };
+
+
+class length_error
+ : public logic_error
+ {
+public:
+ explicit length_error(const string& _Message)
+ : logic_error(_Message)
+ {
+ }
+
+ virtual ~length_error() throw ()
+ {
+ }
+
+
+
+
+
+
+
+
+
+ };
+
+
+class out_of_range
+ : public logic_error
+ {
+public:
+ explicit out_of_range(const string& _Message)
+ : logic_error(_Message)
+ {
+ }
+
+ virtual ~out_of_range() throw ()
+ {
+ }
+
+
+
+
+
+
+
+
+
+ };
+
+
+class runtime_error
+ : public std:: exception
+ {
+public:
+ explicit runtime_error(const string& _Message)
+ : _Str(_Message)
+ {
+ }
+
+ virtual ~runtime_error() throw ()
+ {
+ }
+
+ virtual const char * what() const throw ()
+ {
+ return (_Str.c_str());
+ }
+
+
+
+
+
+
+
+
+
+private:
+ string _Str;
+ };
+
+
+class overflow_error
+ : public runtime_error
+ {
+public:
+ explicit overflow_error(const string& _Message)
+ : runtime_error(_Message)
+ {
+ }
+
+ virtual ~overflow_error() throw ()
+ {
+ }
+
+
+
+
+
+
+
+
+
+ };
+
+
+class underflow_error
+ : public runtime_error
+ {
+public:
+ explicit underflow_error(const string& _Message)
+ : runtime_error(_Message)
+ {
+ }
+
+ virtual ~underflow_error() throw ()
+ {
+ }
+
+
+
+
+
+
+
+
+
+ };
+
+
+class range_error
+ : public runtime_error
+ {
+public:
+ explicit range_error(const string& _Message)
+ : runtime_error(_Message)
+ {
+ }
+
+ virtual ~range_error() throw ()
+ {
+ }
+
+
+
+
+
+
+
+
+
+ };
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
+
+
+#pragma warning(pop)
+#pragma pack(pop)
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+
+
+
+
+
+
+#pragma pack(push,8)
+#pragma warning(push,3)
+
+
+namespace std {
+struct _DebugHeapTag_t
+ {
+ int _Type;
+ };
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(pop)
+#pragma pack(pop)
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+
+
+
+
+
+#pragma once
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern "C" {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ int __cdecl _isctype( int _C, int _Type);
+ int __cdecl _isctype_l( int _C, int _Type, _locale_t _Locale);
+ int __cdecl isalpha( int _C);
+ int __cdecl _isalpha_l( int _C, _locale_t _Locale);
+ int __cdecl isupper( int _C);
+ int __cdecl _isupper_l( int _C, _locale_t _Locale);
+ int __cdecl islower( int _C);
+ int __cdecl _islower_l( int _C, _locale_t _Locale);
+ int __cdecl isdigit( int _C);
+ int __cdecl _isdigit_l( int _C, _locale_t _Locale);
+ int __cdecl isxdigit( int _C);
+ int __cdecl _isxdigit_l( int _C, _locale_t _Locale);
+ int __cdecl isspace( int _C);
+ int __cdecl _isspace_l( int _C, _locale_t _Locale);
+ int __cdecl ispunct( int _C);
+ int __cdecl _ispunct_l( int _C, _locale_t _Locale);
+ int __cdecl isalnum( int _C);
+ int __cdecl _isalnum_l( int _C, _locale_t _Locale);
+ int __cdecl isprint( int _C);
+ int __cdecl _isprint_l( int _C, _locale_t _Locale);
+ int __cdecl isgraph( int _C);
+ int __cdecl _isgraph_l( int _C, _locale_t _Locale);
+ int __cdecl iscntrl( int _C);
+ int __cdecl _iscntrl_l( int _C, _locale_t _Locale);
+ int __cdecl toupper( int _C);
+ int __cdecl tolower( int _C);
+ int __cdecl _tolower( int _C);
+ int __cdecl _tolower_l( int _C, _locale_t _Locale);
+ int __cdecl _toupper( int _C);
+ int __cdecl _toupper_l( int _C, _locale_t _Locale);
+ int __cdecl __isascii( int _C);
+ int __cdecl __toascii( int _C);
+ int __cdecl __iscsymf( int _C);
+ int __cdecl __iscsym( int _C);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma pack(push,8)
+
+
+
+extern "C" {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+struct lconv {
+ char *decimal_point;
+ char *thousands_sep;
+ char *grouping;
+ char *int_curr_symbol;
+ char *currency_symbol;
+ char *mon_decimal_point;
+ char *mon_thousands_sep;
+ char *mon_grouping;
+ char *positive_sign;
+ char *negative_sign;
+ char int_frac_digits;
+ char frac_digits;
+ char p_cs_precedes;
+ char p_sep_by_space;
+ char n_cs_precedes;
+ char n_sep_by_space;
+ char p_sign_posn;
+ char n_sign_posn;
+ };
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ int __cdecl _configthreadlocale( int _Flag);
+ char * __cdecl setlocale( int _Category, const char * _Locale);
+ struct lconv * __cdecl localeconv(void);
+ _locale_t __cdecl _get_current_locale(void);
+ _locale_t __cdecl _create_locale( int _Category, const char * _Locale);
+ void __cdecl _free_locale( _locale_t _Locale);
+
+
+__declspec(deprecated("This function or variable has been superceded by newer library or operating system functionality. Consider using" "_get_current_locale" "instead. See online help for details.")) _locale_t __cdecl __get_current_locale(void);
+__declspec(deprecated("This function or variable has been superceded by newer library or operating system functionality. Consider using" "_create_locale" "instead. See online help for details.")) _locale_t __cdecl __create_locale( int _Category, const char * _Locale);
+__declspec(deprecated("This function or variable has been superceded by newer library or operating system functionality. Consider using" "_free_locale" "instead. See online help for details.")) void __cdecl __free_locale( _locale_t _Locale);
+
+
+
+
+
+
+
+
+
+
+
+}
+
+
+
+#pragma pack(pop)
+
+
+
+
+
+
+
+
+
+
+#pragma pack(push,8)
+
+
+
+
+extern "C" {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _Collvec
+ {
+ unsigned long _Hand;
+ unsigned int _Page;
+ } _Collvec;
+
+typedef struct _Ctypevec
+ {
+ unsigned long _Hand;
+ unsigned int _Page;
+ const short *_Table;
+ int _Delfl;
+ } _Ctypevec;
+
+typedef struct _Cvtvec
+ {
+ unsigned long _Hand;
+ unsigned int _Page;
+ } _Cvtvec;
+
+
+ _Collvec __cdecl _Getcoll();
+ _Ctypevec __cdecl _Getctype();
+ _Cvtvec __cdecl _Getcvt();
+
+ int __cdecl _Getdateorder();
+
+ int __cdecl _Mbrtowc( wchar_t *, const char *, size_t,
+ mbstate_t *, const _Cvtvec *);
+ float __cdecl _Stof(const char *, char **, long);
+ double __cdecl _Stod(const char *, char **, long);
+ long double __cdecl _Stold(const char *, char **,
+ long);
+ int __cdecl _Strcoll(const char *, const char *,
+ const char *, const char *, const _Collvec *);
+ size_t __cdecl _Strxfrm(
+ char * _String1,
+ char * _End1, const char *, const char *, const _Collvec *);
+ int __cdecl _Tolower(int, const _Ctypevec *);
+ int __cdecl _Toupper(int, const _Ctypevec *);
+ int __cdecl _Wcrtomb( char *, wchar_t, mbstate_t *,
+ const _Cvtvec *);
+ int __cdecl _Wcscoll(const wchar_t *, const wchar_t *,
+ const wchar_t *, const wchar_t *, const _Collvec *);
+ size_t __cdecl _Wcsxfrm(
+ wchar_t *_String1,
+ wchar_t *_End1, const wchar_t *, const wchar_t *, const _Collvec *);
+
+ short __cdecl _Getwctype(wchar_t, const _Ctypevec *);
+ const wchar_t * __cdecl _Getwctypes(const wchar_t *, const wchar_t *,
+ short*, const _Ctypevec*);
+ wchar_t __cdecl _Towlower(wchar_t, const _Ctypevec *);
+ wchar_t __cdecl _Towupper(wchar_t, const _Ctypevec *);
+
+}
+
+
+
+extern "C" {
+ void *__cdecl _Gettnames();
+ char *__cdecl _Getdays();
+ char *__cdecl _Getmonths();
+ size_t __cdecl _Strftime(
+ char *, size_t _Maxsize,
+ const char *, const struct tm *, void *);
+}
+
+extern "C" {
+_locale_t __cdecl _GetLocaleForCP(unsigned int);
+}
+
+
+#pragma pack(pop)
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma pack(push,8)
+#pragma warning(push,3)
+#pragma warning(disable:4412)
+
+
+namespace std {
+
+
+class _Timevec
+ {
+public:
+ _Timevec(void *_Ptr = 0)
+ : _Timeptr(_Ptr)
+ {
+ }
+
+ _Timevec(const _Timevec& _Right)
+ {
+ *this = _Right;
+ }
+
+ ~_Timevec()
+ {
+ free(_Timeptr);
+ }
+
+ _Timevec& operator=(const _Timevec& _Right)
+ {
+ _Timeptr = _Right._Timeptr;
+ ((_Timevec *)&_Right)->_Timeptr = 0;
+ return (*this);
+ }
+
+ void * _Getptr() const
+ {
+ return (_Timeptr);
+ }
+
+private:
+ void *_Timeptr;
+ };
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable:4412)
+class _Locinfo
+ {
+public:
+ typedef ::_Collvec _Collvec;
+ typedef ::_Ctypevec _Ctypevec;
+ typedef ::_Cvtvec _Cvtvec;
+ typedef std::_Timevec _Timevec;
+
+ static void __cdecl _Locinfo_ctor(_Locinfo *, const char *);
+ static void __cdecl _Locinfo_ctor(_Locinfo *, int, const char *);
+ static void __cdecl _Locinfo_dtor(_Locinfo *);
+ static _Locinfo& __cdecl _Locinfo_Addcats(_Locinfo *, int, const char *);
+
+ _Locinfo(const char *_Pch = "C")
+
+ : _Lock(0)
+
+ {
+ if (_Pch == 0)
+ throw runtime_error("bad locale name");
+ _Locinfo_ctor(this, _Pch);
+ }
+
+ _Locinfo(int _I, const char *_Pch)
+
+ : _Lock(0)
+
+ {
+ if (_Pch == 0)
+ throw runtime_error("bad locale name");
+ _Locinfo_ctor(this, _I, _Pch);
+ }
+
+ ~_Locinfo()
+ {
+ _Locinfo_dtor(this);
+ }
+
+ _Locinfo& _Addcats(int _I, const char *_Pch)
+ {
+ if (_Pch == 0)
+ throw runtime_error("bad locale name");
+ return _Locinfo_Addcats(this, _I, _Pch);
+ }
+
+ string _Getname() const
+ {
+ return (_Newlocname);
+ }
+
+ _Collvec _Getcoll() const
+ {
+ return (::_Getcoll());
+ }
+
+ _Ctypevec _Getctype() const
+ {
+ return (::_Getctype());
+ }
+
+ _Cvtvec _Getcvt() const
+ {
+ return (::_Getcvt());
+ }
+
+ const lconv * _Getlconv() const
+ {
+ return (localeconv());
+ }
+
+ _Timevec _Gettnames() const
+ {
+ return (_Timevec(::_Gettnames()));
+ }
+
+ const char * _Getdays() const
+ {
+ const char *_Ptr = ::_Getdays();
+ if (_Ptr != 0)
+ {
+ ((_Locinfo *)this)->_Days = _Ptr;
+ free((void *)_Ptr);
+ }
+ return (_Days.size() != 0 ? _Days.c_str()
+ : ":Sun:Sunday:Mon:Monday:Tue:Tuesday:Wed:Wednesday"
+ ":Thu:Thursday:Fri:Friday:Sat:Saturday");
+ }
+
+ const char * _Getmonths() const
+ {
+ const char *_Ptr = ::_Getmonths();
+ if (_Ptr != 0)
+ {
+ ((_Locinfo *)this)->_Months = _Ptr;
+ free((void *)_Ptr);
+ }
+ return (_Months.size() != 0 ? _Months.c_str()
+ : ":Jan:January:Feb:February:Mar:March"
+ ":Apr:April:May:May:Jun:June"
+ ":Jul:July:Aug:August:Sep:September"
+ ":Oct:October:Nov:November:Dec:December");
+ }
+
+ const char * _Getfalse() const
+ {
+ return ("false");
+ }
+
+ const char * _Gettrue() const
+ {
+ return ("true");
+ }
+
+ int _Getdateorder() const
+ {
+ return ::_Getdateorder();
+ }
+
+private:
+
+
+
+
+
+ _Lockit _Lock;
+
+ string _Days;
+ string _Months;
+ string _Oldlocname;
+ string _Newlocname;
+ };
+#pragma warning(pop)
+
+
+template<class _Elem> inline
+ int __cdecl _LStrcoll(const _Elem *_First1, const _Elem *_Last1,
+ const _Elem *_First2, const _Elem *_Last2,
+ const _Locinfo::_Collvec *)
+ {
+ for (; _First1 != _Last1 && _First2 != _Last2; ++_First1, ++_First2)
+ if (*_First1 < *_First2)
+ return (-1);
+ else if (*_First2 < *_First1)
+ return (+1);
+ return (_First2 != _Last2 ? -1 : _First1 != _Last1 ? +1 : 0);
+ }
+
+template<> inline
+ int __cdecl _LStrcoll(const char *_First1, const char *_Last1,
+ const char *_First2, const char *_Last2,
+ const _Locinfo::_Collvec *_Vector)
+ {
+ return (_Strcoll(_First1, _Last1, _First2, _Last2, _Vector));
+ }
+
+template<> inline
+ int __cdecl _LStrcoll(const wchar_t *_First1, const wchar_t *_Last1,
+ const wchar_t *_First2, const wchar_t *_Last2,
+ const _Locinfo::_Collvec *_Vector)
+ {
+ return (_Wcscoll(_First1, _Last1, _First2, _Last2, _Vector));
+ }
+
+
+template<class _Elem> inline
+ size_t __cdecl _LStrxfrm(_Elem *_First1, _Elem *_Last1,
+ const _Elem *_First2, const _Elem *_Last2,
+ const _Locinfo::_Collvec *)
+ {
+ size_t _Count = _Last2 - _First2;
+ if (_Count <= (size_t)(_Last1 - _First1))
+ ::memcpy_s((_First1), ((_Last1 - _First1)* sizeof(_Elem)), (_First2), (_Count * sizeof (_Elem)));
+ return (_Count);
+ }
+
+template<> inline
+ size_t __cdecl _LStrxfrm(
+ char *_First1,
+ char *_Last1,
+ const char *_First2, const char *_Last2,
+ const _Locinfo::_Collvec *_Vector)
+ {
+ return (_Strxfrm(_First1, _Last1, _First2, _Last2, _Vector));
+ }
+
+template<> inline
+ size_t __cdecl _LStrxfrm(
+ wchar_t *_First1,
+ wchar_t *_Last1,
+ const wchar_t *_First2, const wchar_t *_Last2,
+ const _Locinfo::_Collvec *_Vector)
+ {
+ return (_Wcsxfrm(_First1, _Last1, _First2, _Last2, _Vector));
+ }
+}
+
+
+#pragma warning(pop)
+#pragma pack(pop)
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma pack(push,8)
+#pragma warning(push,3)
+#pragma warning(disable:4412)
+
+
+namespace std {
+
+
+template<class _Dummy>
+ class _Locbase
+ {
+public:
+ static const int collate = ((1 << (1)) >> 1);
+ static const int ctype = ((1 << (2)) >> 1);
+ static const int monetary = ((1 << (3)) >> 1);
+ static const int numeric = ((1 << (4)) >> 1);
+ static const int time = ((1 << (5)) >> 1);
+ static const int messages = ((1 << (6)) >> 1);
+ static const int all = (((1 << (7)) >> 1) - 1);
+ static const int none = 0;
+ };
+
+template<class _Dummy>
+ const int _Locbase<_Dummy>::collate;
+template<class _Dummy>
+ const int _Locbase<_Dummy>::ctype;
+template<class _Dummy>
+ const int _Locbase<_Dummy>::monetary;
+template<class _Dummy>
+ const int _Locbase<_Dummy>::numeric;
+template<class _Dummy>
+ const int _Locbase<_Dummy>::time;
+template<class _Dummy>
+ const int _Locbase<_Dummy>::messages;
+template<class _Dummy>
+ const int _Locbase<_Dummy>::all;
+template<class _Dummy>
+ const int _Locbase<_Dummy>::none;
+
+
+class locale;
+template<class _Facet>
+ const _Facet& __cdecl use_facet(const locale&);
+
+
+#pragma warning(push)
+#pragma warning(disable:4412)
+class locale
+ : public _Locbase<int>
+ {
+public:
+ typedef int category;
+
+
+ class id
+ {
+ public:
+ id(size_t _Val = 0)
+ : _Id(_Val)
+ {
+ }
+
+ operator size_t()
+ {
+ if (_Id == 0)
+ {
+ { ::std:: _Lockit _Lock(0);
+ if (_Id == 0)
+ _Id = ++_Id_cnt;
+ }
+ }
+ return (_Id);
+ }
+
+ private:
+ id(const id&);
+ id& operator=(const id&);
+
+ size_t _Id;
+ static int& __cdecl _Id_cnt_func();
+
+
+
+ static int _Id_cnt;
+
+ };
+
+ class _Locimp;
+
+
+ class facet
+ {
+ friend class locale;
+ friend class _Locimp;
+
+ public:
+ static size_t __cdecl _Getcat(const facet ** = 0)
+ {
+ return ((size_t)(-1));
+ }
+
+ void _Incref()
+ {
+ { ::std:: _Lockit _Lock(0);
+ if (_Refs < (size_t)(-1))
+ ++_Refs;
+ }
+ }
+
+ facet * _Decref()
+ {
+ { ::std:: _Lockit _Lock(0);
+ if (0 < _Refs && _Refs < (size_t)(-1))
+ --_Refs;
+ return (_Refs == 0 ? this : 0);
+ }
+ }
+
+ void _Register()
+ {
+ facet_Register(this);
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ virtual ~facet()
+ {
+ }
+
+ protected:
+ explicit facet(size_t _Initrefs = 0)
+ : _Refs(_Initrefs)
+ {
+ }
+
+ private:
+ static void __cdecl facet_Register(facet *);
+
+ facet(const facet&);
+ facet& operator=(const facet&);
+
+ size_t _Refs;
+ };
+
+
+ class _Locimp
+ : public facet
+ {
+ protected:
+ ~_Locimp()
+ {
+ _Locimp_dtor(this);
+ }
+
+ private:
+ static void __cdecl _Locimp_dtor(_Locimp *);
+ static void __cdecl _Locimp_ctor(_Locimp *,const _Locimp&);
+ static void __cdecl _Locimp_Addfac(_Locimp *,facet *, size_t);
+ friend class locale;
+
+ _Locimp(bool _Transparent = false)
+ : locale::facet(1), _Facetvec(0), _Facetcount(0),
+ _Catmask(none), _Xparent(_Transparent), _Name("*")
+ { }
+
+ _Locimp(const _Locimp& _Right)
+ : locale::facet(1), _Facetvec(0), _Facetcount(_Right._Facetcount),
+ _Catmask(_Right._Catmask), _Xparent(_Right._Xparent), _Name(_Right._Name)
+ {
+ _Locimp_ctor(this, _Right);
+ }
+
+ void _Addfac(facet *_Pfacet, size_t _Id)
+ {
+ _Locimp_Addfac(this, _Pfacet, _Id);
+ }
+
+ static _Locimp *__cdecl _Makeloc(const _Locinfo&,
+ category, _Locimp *, const locale *);
+
+ static void __cdecl _Makewloc(const _Locinfo&,
+ category, _Locimp *, const locale *);
+
+
+ static void __cdecl _Makeushloc(const _Locinfo&,
+ category, _Locimp *, const locale *);
+
+
+ static void __cdecl _Makexloc(const _Locinfo&,
+ category, _Locimp *, const locale *);
+
+ facet **_Facetvec;
+ size_t _Facetcount;
+ category _Catmask;
+ bool _Xparent;
+ string _Name;
+
+ static _Locimp *& __cdecl _Clocptr_func();
+
+
+
+ static _Locimp *_Clocptr;
+
+private:
+ _Locimp& operator=(const _Locimp&);
+
+ };
+
+ __declspec(deprecated("This is an obsolete part of the Standard C++ Library Implementation. Do not use it.")) locale& _Addfac(facet *_Fac, size_t _Id,
+ size_t _Catmask)
+ {
+ if (1 < this->_Ptr->_Refs)
+ {
+ this->_Ptr->_Decref();
+ this->_Ptr = new _Locimp(*this->_Ptr);
+ }
+ this->_Ptr->_Addfac(_Fac, _Id);
+
+ if (_Catmask != 0)
+ this->_Ptr->_Name = "*";
+ return (*this);
+ }
+
+ template<class _Elem,
+ class _Traits,
+ class _Alloc>
+ bool operator()(const basic_string<_Elem, _Traits, _Alloc>& _Left,
+ const basic_string<_Elem, _Traits, _Alloc>& _Right) const
+ {
+ const std::collate<_Elem>& _Coll_fac =
+ std::use_facet<std::collate<_Elem> >(*this);
+
+ return (_Coll_fac.compare(_Left.c_str(), _Left.c_str() + _Left.size(),
+ _Right.c_str(), _Right.c_str() + _Right.size()) < 0);
+ }
+
+ template<class _Facet>
+ locale combine(const locale& _Loc) const
+ {
+ _Facet *_Facptr;
+
+ try {
+ _Facptr = (_Facet *)&std::use_facet<_Facet>(_Loc);
+ } catch (...) {
+ throw runtime_error("locale::combine facet missing");
+ }
+
+ _Locimp *_Newimp = new _Locimp(*_Ptr);
+ _Newimp->_Addfac(_Facptr, _Facet::id);
+ _Newimp->_Catmask = 0;
+ _Newimp->_Name = "*";
+ return (locale(_Newimp));
+ }
+
+ template<class _Facet>
+ locale(const locale& _Loc, const _Facet *_Facptr)
+ : _Ptr(new _Locimp(*_Loc._Ptr))
+ {
+ if (_Facptr != 0)
+ {
+ _Ptr->_Addfac((_Facet *)_Facptr, _Facet::id);
+ if (_Facet::_Getcat() != (size_t)(-1))
+ _Ptr->_Catmask = 0, _Ptr->_Name = "*";
+ }
+ }
+
+
+ locale() throw ()
+ : _Ptr(_Init())
+ {
+ _Getgloballocale()->_Incref();
+ }
+
+ locale(_Uninitialized)
+ {
+ }
+
+ locale(const locale& _Right) throw ()
+ : _Ptr(_Right._Ptr)
+ {
+ _Ptr->_Incref();
+ }
+
+ locale(const locale& _Loc, const locale& _Other,
+ category _Cat)
+ : _Ptr(new _Locimp(*_Loc._Ptr))
+ {
+ try {
+ { _Locinfo _Lobj(_Loc._Ptr->_Catmask, _Loc._Ptr->_Name.c_str());
+ _Locimp::_Makeloc(_Lobj._Addcats(_Cat & _Other._Ptr->_Catmask,
+ _Other._Ptr->_Name.c_str()), _Cat, _Ptr, &_Other);
+ }
+ } catch (...) {
+ delete (_Ptr->_Decref());
+ throw;
+ }
+ }
+
+ explicit locale(const char *_Locname,
+ category _Cat = all)
+ : _Ptr(new _Locimp)
+ {
+ try {
+ _Init();
+ { _Locinfo _Lobj(_Cat, _Locname);
+ if (_Lobj._Getname().compare("*") == 0)
+ throw runtime_error("bad locale name");
+ _Locimp::_Makeloc(_Lobj, _Cat, _Ptr, 0);
+ }
+ } catch (...) {
+ delete (_Ptr->_Decref());
+ throw;
+ }
+ }
+
+ locale(const locale& _Loc, const char * _Locname,
+ category _Cat)
+ : _Ptr(new _Locimp(*_Loc._Ptr))
+ {
+ try {
+ { _Locinfo _Lobj(_Loc._Ptr->_Catmask, _Loc._Ptr->_Name.c_str());
+ bool _Hadname = _Lobj._Getname().compare("*") != 0;
+ _Lobj._Addcats(_Cat, _Locname);
+
+ if (_Hadname && _Lobj._Getname().compare("*") == 0)
+ throw runtime_error("bad locale name");
+ _Locimp::_Makeloc(_Lobj, _Cat, _Ptr, 0);
+ }
+ } catch (...) {
+ delete (_Ptr->_Decref());
+ throw;
+ }
+ }
+
+ ~locale() throw ()
+ {
+ if (_Ptr != 0)
+ delete (_Ptr->_Decref());
+ }
+
+ locale& operator=(const locale& _Right) throw ()
+ {
+ if (_Ptr != _Right._Ptr)
+ {
+ delete (_Ptr->_Decref());
+ _Ptr = _Right._Ptr;
+ _Ptr->_Incref();
+ }
+ return (*this);
+ }
+
+ string name() const
+ {
+ return (_Ptr->_Name);
+ }
+
+ const facet * _Getfacet(size_t _Id) const
+ {
+ const facet *_Facptr = _Id < _Ptr->_Facetcount
+ ? _Ptr->_Facetvec[_Id] : 0;
+ if (_Facptr != 0 || !_Ptr->_Xparent)
+ return (_Facptr);
+ else
+ {
+ locale::_Locimp *_Ptr = _Getgloballocale();
+ return (_Id < _Ptr->_Facetcount
+ ? _Ptr->_Facetvec[_Id]
+ : 0);
+ }
+ }
+
+
+ bool operator==(const locale& _Loc) const
+ {
+ return (_Ptr == _Loc._Ptr
+ || name().compare("*") != 0 && name().compare(_Loc.name()) == 0);
+ }
+
+ bool operator!=(const locale& _Right) const
+ {
+ return (!(*this == _Right));
+ }
+
+ static const locale& __cdecl classic();
+
+ static locale __cdecl global(const locale&);
+
+ static locale __cdecl empty();
+
+private:
+ locale(_Locimp *_Ptrimp)
+ : _Ptr(_Ptrimp)
+ {
+ }
+
+ static _Locimp *__cdecl _Getgloballocale();
+ static _Locimp *__cdecl _Init();
+ static void __cdecl _Setgloballocale(void *);
+
+ _Locimp *_Ptr;
+ };
+#pragma warning(pop)
+
+
+template<class _Facet>
+ struct _Facetptr
+ {
+ static const locale::facet *_Psave;
+ };
+
+template<class _Facet>
+ const locale::facet *_Facetptr<_Facet>::_Psave = 0;
+
+template<class _Facet> inline __declspec(deprecated("This is an obsolete part of the Standard C++ Library Implementation. Do not use it."))
+ locale _Addfac(locale _Loc, const _Facet *_Facptr)
+ {
+ return (_Loc._Addfac((_Facet *)_Facptr, _Facet::id,
+ _Facet::_Getcat()));
+ }
+
+
+
+
+
+
+template<class _Facet> inline
+ const _Facet& __cdecl use_facet(const locale& _Loc)
+ {
+ { ::std:: _Lockit _Lock(0);
+ const locale::facet *_Psave =
+ _Facetptr<_Facet>::_Psave;
+
+ size_t _Id = _Facet::id;
+ const locale::facet *_Pf = _Loc._Getfacet(_Id);
+
+ if (_Pf != 0)
+ ;
+ else if (_Psave != 0)
+ _Pf = _Psave;
+ else if (_Facet::_Getcat(&_Psave) == (size_t)(-1))
+
+
+ throw bad_cast();
+
+
+
+
+
+ else
+ {
+ _Pf = _Psave;
+ _Facetptr<_Facet>::_Psave = _Psave;
+
+ locale::facet *_Pfmod = (_Facet *)_Psave;
+ _Pfmod->_Incref();
+ _Pfmod->_Register();
+ }
+
+ return ((const _Facet&)(*_Pf));
+ }
+ }
+
+template<class _Facet> inline __declspec(deprecated("This is an obsolete part of the Standard C++ Library Implementation. Do not use it."))
+ const _Facet& __cdecl use_facet(const locale& _Loc, const _Facet *,
+ bool = false)
+ {
+ return use_facet<_Facet>(_Loc);
+ }
+
+
+template<class _Elem,
+ class _InIt> inline
+ int __cdecl _Getloctxt(_InIt& _First, _InIt& _Last, size_t _Numfields,
+ const _Elem *_Ptr)
+ {
+ for (size_t _Off = 0; _Ptr[_Off] != (_Elem)0; ++_Off)
+ if (_Ptr[_Off] == _Ptr[0])
+ ++_Numfields;
+ string _Str(_Numfields, '\0');
+
+ int _Ans = -2;
+ for (size_t _Column = 1; ; ++_Column, ++_First, _Ans = -1)
+ {
+ bool _Prefix = false;
+ size_t _Off = 0;
+ size_t _Field = 0;
+
+ for (; _Field < _Numfields; ++_Field)
+ {
+ for (; _Ptr[_Off] != (_Elem)0 && _Ptr[_Off] != _Ptr[0]; ++_Off)
+ ;
+
+ if (_Str[_Field] != '\0')
+ _Off += _Str[_Field];
+ else if (_Ptr[_Off += _Column] == _Ptr[0]
+ || _Ptr[_Off] == (_Elem)0)
+ {
+ _Str[_Field] = (char)(_Column < 127
+ ? _Column : 127);
+ _Ans = (int)_Field;
+ }
+ else if (_First == _Last || _Ptr[_Off] != *_First)
+ _Str[_Field] = (char)(_Column < 127
+ ? _Column : 127);
+ else
+ _Prefix = true;
+ }
+
+ if (!_Prefix || _First == _Last)
+ break;
+ }
+ return (_Ans);
+ }
+
+
+
+
+
+template<class _Elem> inline
+ char __cdecl _Maklocbyte(_Elem _Char,
+ const _Locinfo::_Cvtvec&)
+ {
+ return ((char)(unsigned char)_Char);
+ }
+
+template<> inline
+ char __cdecl _Maklocbyte(wchar_t _Char,
+ const _Locinfo::_Cvtvec& _Cvt)
+ {
+ char _Byte = '\0';
+ mbstate_t _Mbst1 = {0};
+ _Wcrtomb(&_Byte, _Char, &_Mbst1, &_Cvt);
+ return (_Byte);
+ }
+
+
+
+
+
+
+template<class _Elem> inline
+ _Elem __cdecl _Maklocchr(char _Byte, _Elem *,
+ const _Locinfo::_Cvtvec&)
+ {
+ return ((_Elem)(unsigned char)_Byte);
+ }
+
+template<> inline
+ wchar_t __cdecl _Maklocchr(char _Byte, wchar_t *,
+ const _Locinfo::_Cvtvec& _Cvt)
+ {
+ wchar_t _Wc = L'\0';
+ mbstate_t _Mbst1 = {0};
+ _Mbrtowc(&_Wc, &_Byte, 1, &_Mbst1, &_Cvt);
+ return (_Wc);
+ }
+
+
+
+
+
+
+template<class _Elem> inline
+ _Elem *__cdecl _Maklocstr(const char *_Ptr, _Elem *,
+ const _Locinfo::_Cvtvec&)
+ {
+ size_t _Count = ::strlen(_Ptr) + 1;
+ _Elem *_Ptrdest = new _Elem[_Count];
+
+#pragma warning(push)
+#pragma warning(disable: 6011)
+
+ for (_Elem *_Ptrnext = _Ptrdest; 0 < _Count; --_Count, ++_Ptrnext, ++_Ptr)
+ *_Ptrnext = (_Elem)(unsigned char)*_Ptr;
+ return (_Ptrdest);
+#pragma warning(pop)
+ }
+
+template<> inline
+ wchar_t *__cdecl _Maklocstr(const char *_Ptr, wchar_t *,
+ const _Locinfo::_Cvtvec& _Cvt)
+ {
+ size_t _Count, _Count1;
+ size_t _Wchars;
+ const char *_Ptr1;
+ int _Bytes;
+ wchar_t _Wc;
+ mbstate_t _Mbst1 = {0};
+
+ _Count1 = ::strlen(_Ptr) + 1;
+ for (_Count = _Count1, _Wchars = 0, _Ptr1 = _Ptr; 0 < _Count;
+ _Count -= _Bytes, _Ptr1 += _Bytes, ++_Wchars)
+ if ((_Bytes = _Mbrtowc(&_Wc, _Ptr1, _Count, &_Mbst1, &_Cvt)) <= 0)
+ break;
+ ++_Wchars;
+
+ wchar_t *_Ptrdest = new wchar_t[_Wchars];
+ wchar_t *_Ptrnext = _Ptrdest;
+ mbstate_t _Mbst2 = {0};
+#pragma warning(push)
+#pragma warning(disable: 6011)
+
+ for (; 0 < _Wchars;
+ _Count -= _Bytes, _Ptr += _Bytes, --_Wchars, ++_Ptrnext)
+ if ((_Bytes = _Mbrtowc(_Ptrnext, _Ptr, _Count1, &_Mbst2, &_Cvt)) <= 0)
+ break;
+ *_Ptrnext = L'\0';
+#pragma warning(pop)
+ return (_Ptrdest);
+ }
+
+
+
+class codecvt_base
+ : public locale::facet
+ {
+public:
+ enum
+ {
+ ok, partial, error, noconv};
+ typedef int result;
+
+ codecvt_base(size_t _Refs = 0)
+ : locale::facet(_Refs)
+ {
+ }
+
+ bool always_noconv() const throw ()
+ {
+ return (do_always_noconv());
+ }
+
+ int max_length() const throw ()
+ {
+ return (do_max_length());
+ }
+
+ int encoding() const throw ()
+ {
+ return (do_encoding());
+ }
+
+ ~codecvt_base()
+ {
+ }
+
+protected:
+ virtual bool do_always_noconv() const throw ()
+ {
+ return (true);
+ }
+
+ virtual int do_max_length() const throw ()
+ {
+ return (1);
+ }
+
+ virtual int do_encoding() const throw ()
+ {
+ return (1);
+ }
+ };
+
+
+template<class _Elem,
+ class _Byte,
+ class _Statype>
+ class codecvt
+ : public codecvt_base
+ {
+public:
+ typedef _Elem intern_type;
+ typedef _Byte extern_type;
+ typedef _Statype state_type;
+
+ result in(_Statype& _State,
+ const _Byte *_First1, const _Byte *_Last1, const _Byte *& _Mid1,
+ _Elem *_First2, _Elem *_Last2, _Elem *& _Mid2) const
+ {
+ return (do_in(_State,
+ _First1, _Last1, _Mid1, _First2, _Last2, _Mid2));
+ }
+
+ result out(_Statype& _State,
+ const _Elem *_First1, const _Elem *_Last1, const _Elem *& _Mid1,
+ _Byte *_First2, _Byte *_Last2, _Byte *& _Mid2) const
+ {
+ return (do_out(_State,
+ _First1, _Last1, _Mid1, _First2, _Last2, _Mid2));
+ }
+
+ result unshift(_Statype& _State,
+ _Byte *_First2, _Byte *_Last2, _Byte *& _Mid2) const
+ {
+ return (do_unshift(_State, _First2, _Last2, _Mid2));
+ }
+
+ int length(const _Statype& _State, const _Byte *_First1,
+ const _Byte *_Last1, size_t _Count) const
+ {
+ return (do_length(_State, _First1, _Last1, _Count));
+ }
+
+ static locale::id id;
+
+ explicit codecvt(size_t _Refs = 0)
+ : codecvt_base(_Refs)
+ {
+ { _Locinfo _Lobj;
+ _Init(_Lobj);
+ }
+ }
+
+ codecvt(const _Locinfo& _Lobj, size_t _Refs = 0)
+ : codecvt_base(_Refs)
+ {
+ _Init(_Lobj);
+ }
+
+ static size_t __cdecl _Getcat(const locale::facet **_Ppf = 0)
+ {
+ if (_Ppf != 0 && *_Ppf == 0)
+ *_Ppf = new codecvt<_Elem, _Byte, _Statype>;
+ return (2);
+ }
+
+protected:
+ virtual ~codecvt()
+ {
+ }
+
+protected:
+ void _Init(const _Locinfo&)
+ {
+ }
+
+ virtual result do_in(_Statype&,
+ const _Byte *_First1, const _Byte *, const _Byte *& _Mid1,
+ _Elem *_First2, _Elem *, _Elem *& _Mid2) const
+ {
+ _Mid1 = _First1, _Mid2 = _First2;
+ return (noconv);
+ }
+
+ virtual result do_out(_Statype&,
+ const _Elem *_First1, const _Elem *, const _Elem *& _Mid1,
+ _Byte *_First2, _Byte *, _Byte *& _Mid2) const
+ {
+ _Mid1 = _First1, _Mid2 = _First2;
+ return (noconv);
+ }
+
+ virtual result do_unshift(_Statype&,
+ _Byte *_First2, _Byte *, _Byte *&_Mid2) const
+ {
+ _Mid2 = _First2;
+ return (noconv);
+ }
+
+ virtual int do_length(const _Statype&, const _Byte *_First1,
+ const _Byte *_Last1, size_t _Count) const
+ {
+ return ((int)(_Count < (size_t)(_Last1 - _First1)
+ ? _Count : _Last1 - _First1));
+ }
+ };
+
+
+template<class _Elem,
+ class _Byte,
+ class _Statype>
+ locale::id codecvt<_Elem, _Byte, _Statype>::id;
+
+
+template<> class codecvt<wchar_t, char, _Mbstatet>
+ : public codecvt_base
+ {
+public:
+ typedef wchar_t _Elem;
+ typedef char _Byte;
+ typedef _Mbstatet _Statype;
+ typedef _Elem intern_type;
+ typedef _Byte extern_type;
+ typedef _Statype state_type;
+
+ result in(_Statype& _State,
+ const _Byte *_First1, const _Byte *_Last1, const _Byte *& _Mid1,
+ _Elem *_First2, _Elem *_Last2, _Elem *& _Mid2) const
+ {
+ return (do_in(_State,
+ _First1, _Last1, _Mid1, _First2, _Last2, _Mid2));
+ }
+
+ result out(_Statype& _State,
+ const _Elem *_First1, const _Elem *_Last1, const _Elem *& _Mid1,
+ _Byte *_First2, _Byte *_Last2, _Byte *& _Mid2) const
+ {
+ return (do_out(_State,
+ _First1, _Last1, _Mid1, _First2, _Last2, _Mid2));
+ }
+
+ result unshift(_Statype& _State,
+ _Byte *_First2, _Byte *_Last2, _Byte *& _Mid2) const
+ {
+ return (do_unshift(_State,
+ _First2, _Last2, _Mid2));
+ }
+
+ int length(const _Statype& _State, const _Byte *_First1,
+ const _Byte *_Last1, size_t _Count) const
+ {
+ return (do_length(_State, _First1, _Last1, _Count));
+ }
+
+ static locale::id& __cdecl _Id_func();
+
+
+
+ static locale::id id;
+
+
+ explicit codecvt(size_t _Refs = 0)
+ : codecvt_base(_Refs)
+ {
+ { _Locinfo _Lobj;
+ _Init(_Lobj);
+ }
+ }
+
+ codecvt(const _Locinfo& _Lobj, size_t _Refs = 0)
+ : codecvt_base(_Refs)
+ {
+ _Init(_Lobj);
+ }
+
+ static size_t __cdecl _Getcat(const locale::facet **_Ppf = 0)
+ {
+ if (_Ppf != 0 && *_Ppf == 0)
+ *_Ppf = new codecvt<_Elem, _Byte, _Statype>;
+ return (2);
+ }
+
+protected:
+ virtual ~codecvt()
+ {
+ }
+
+protected:
+ void _Init(const _Locinfo& _Lobj)
+ {
+ _Cvt = _Lobj._Getcvt();
+ }
+
+ virtual result do_in(_Statype& _State,
+ const _Byte *_First1, const _Byte *_Last1, const _Byte *& _Mid1,
+ _Elem *_First2, _Elem *_Last2, _Elem *& _Mid2) const
+ {
+ ;
+ ;
+ _Mid1 = _First1, _Mid2 = _First2;
+ result _Ans = _Mid1 == _Last1 ? ok : partial;
+ int _Bytes;
+
+ while (_Mid1 != _Last1 && _Mid2 != _Last2)
+ switch (_Bytes = _Mbrtowc(_Mid2, _Mid1, _Last1 - _Mid1,
+ &_State, &_Cvt))
+ {
+ case -2:
+ _Mid1 = _Last1;
+ return (_Ans);
+
+ case -1:
+ return (error);
+
+ case 0:
+ if (*_Mid2 == (_Elem)0)
+ _Bytes = (int)::strlen(_Mid1) + 1;
+
+
+ default:
+ if (_Bytes == -3)
+ _Bytes = 0;
+ _Mid1 += _Bytes;
+ ++_Mid2;
+ _Ans = ok;
+ }
+ return (_Ans);
+ }
+
+ virtual result do_out(_Statype& _State,
+ const _Elem *_First1, const _Elem *_Last1, const _Elem *& _Mid1,
+ _Byte *_First2, _Byte *_Last2, _Byte *& _Mid2) const
+ {
+ ;
+ ;
+ _Mid1 = _First1, _Mid2 = _First2;
+ result _Ans = _Mid1 == _Last1 ? ok : partial;
+ int _Bytes;
+
+ while (_Mid1 != _Last1 && _Mid2 != _Last2)
+ if (5 <= _Last2 - _Mid2)
+ if ((_Bytes = _Wcrtomb(_Mid2, *_Mid1,
+ &_State, &_Cvt)) < 0)
+ return (error);
+ else
+ ++_Mid1, _Mid2 += _Bytes, _Ans = ok;
+ else
+ {
+ _Byte _Buf[5];
+ _Statype _Stsave = _State;
+
+ if ((_Bytes = _Wcrtomb(_Buf, *_Mid1,
+ &_State, &_Cvt)) < 0)
+ return (error);
+ else if (_Last2 - _Mid2 < _Bytes)
+ {
+ _State = _Stsave;
+ return (_Ans);
+ }
+ else
+ {
+ ::memcpy_s((_Mid2), (_Last2 - _Mid2), (_Buf), (_Bytes));
+ ++_Mid1, _Mid2 += _Bytes, _Ans = ok;
+ }
+ }
+ return (_Ans);
+ }
+
+ virtual result do_unshift(_Statype& _State,
+ _Byte *_First2, _Byte *_Last2, _Byte *& _Mid2) const
+ {
+ ;
+ _Mid2 = _First2;
+ result _Ans = ok;
+ int _Bytes;
+ _Byte _Buf[5];
+ _Statype _Stsave = _State;
+
+ if ((_Bytes = _Wcrtomb(_Buf, L'\0', &_State, &_Cvt)) <= 0)
+ _Ans = error;
+ else if (_Last2 - _Mid2 < --_Bytes)
+ {
+ _State = _Stsave;
+ _Ans = partial;
+ }
+ else if (0 < _Bytes)
+ {
+ ::memcpy_s((_Mid2), (_Last2 - _Mid2), (_Buf), (_Bytes));
+ _Mid2 += _Bytes;
+ }
+ return (_Ans);
+ }
+
+ virtual int do_length(const _Statype& _State, const _Byte *_First1,
+ const _Byte *_Last1, size_t _Count) const
+ {
+ ;
+ int _Wchars;
+ const _Byte *_Mid1;
+ _Statype _Mystate = _State;
+
+ for (_Wchars = 0, _Mid1 = _First1;
+ (size_t)_Wchars < _Count && _Mid1 != _Last1; )
+ {
+ int _Bytes;
+ _Elem _Ch;
+
+ switch (_Bytes = _Mbrtowc(&_Ch, _Mid1, _Last1 - _Mid1,
+ &_Mystate, &_Cvt))
+ {
+ case -2:
+ return (_Wchars);
+
+ case -1:
+ return (_Wchars);
+
+ case 0:
+ if (_Ch == (_Elem)0)
+ _Bytes = (int)::strlen(_Mid1) + 1;
+
+
+ default:
+ if (_Bytes == -3)
+ _Bytes = 0;
+ _Mid1 += _Bytes;
+ ++_Wchars;
+ }
+ }
+ return (_Wchars);
+ }
+
+ virtual bool do_always_noconv() const throw ()
+ {
+ return (false);
+ }
+
+ virtual int do_max_length() const throw ()
+ {
+ return (5);
+ }
+
+ virtual int do_encoding() const throw ()
+ {
+ return (0);
+ }
+
+private:
+ _Locinfo::_Cvtvec _Cvt;
+ };
+
+
+
+template<> class codecvt<unsigned short, char, _Mbstatet>
+ : public codecvt_base
+ {
+public:
+ typedef unsigned short _Elem;
+ typedef char _Byte;
+ typedef _Mbstatet _Statype;
+ typedef _Elem intern_type;
+ typedef _Byte extern_type;
+ typedef _Statype state_type;
+
+ result in(_Statype& _State,
+ const _Byte *_First1, const _Byte *_Last1, const _Byte *& _Mid1,
+ _Elem *_First2, _Elem *_Last2, _Elem *& _Mid2) const
+ {
+ return (do_in(_State,
+ _First1, _Last1, _Mid1, _First2, _Last2, _Mid2));
+ }
+
+ result out(_Statype& _State,
+ const _Elem *_First1, const _Elem *_Last1, const _Elem *& _Mid1,
+ _Byte *_First2, _Byte *_Last2, _Byte *& _Mid2) const
+ {
+ return (do_out(_State,
+ _First1, _Last1, _Mid1, _First2, _Last2, _Mid2));
+ }
+
+ result unshift(_Statype& _State,
+ _Byte *_First2, _Byte *_Last2, _Byte *& _Mid2) const
+ {
+ return (do_unshift(_State,
+ _First2, _Last2, _Mid2));
+ }
+
+ int length(const _Statype& _State, const _Byte *_First1,
+ const _Byte *_Last1, size_t _Count) const
+ {
+ return (do_length(_State, _First1, _Last1, _Count));
+ }
+
+ static locale::id& __cdecl _Id_func();
+
+
+
+ static locale::id id;
+
+
+ explicit codecvt(size_t _Refs = 0)
+ : codecvt_base(_Refs)
+ {
+ { _Locinfo _Lobj;
+ _Init(_Lobj);
+ }
+ }
+
+ codecvt(const _Locinfo& _Lobj, size_t _Refs = 0)
+ : codecvt_base(_Refs)
+ {
+ _Init(_Lobj);
+ }
+
+ static size_t __cdecl _Getcat(const locale::facet **_Ppf = 0)
+ {
+ if (_Ppf != 0 && *_Ppf == 0)
+ *_Ppf = new codecvt<_Elem, _Byte, _Statype>;
+ return (2);
+ }
+
+protected:
+ virtual ~codecvt()
+ {
+ }
+
+protected:
+ codecvt(const char *_Locname, size_t _Refs = 0)
+ : codecvt_base(_Refs)
+ {
+ { _Locinfo _Lobj(_Locname);
+ _Init(_Lobj);
+ }
+ }
+
+ void _Init(const _Locinfo& _Lobj)
+ {
+ _Cvt = _Lobj._Getcvt();
+ }
+
+ virtual result do_in(_Statype& _State,
+ const _Byte *_First1, const _Byte *_Last1, const _Byte *& _Mid1,
+ _Elem *_First2, _Elem *_Last2, _Elem *& _Mid2) const
+ {
+ ;
+ ;
+ _Mid1 = _First1, _Mid2 = _First2;
+ result _Ans = _Mid1 == _Last1 ? ok : partial;
+ int _Bytes;
+
+ while (_Mid1 != _Last1 && _Mid2 != _Last2)
+ switch (_Bytes = _Mbrtowc((wchar_t *)_Mid2, _Mid1, _Last1 - _Mid1,
+ &_State, &_Cvt))
+ {
+ case -2:
+ _Mid1 = _Last1;
+ return (_Ans);
+
+ case -1:
+ return (error);
+
+ case 0:
+ if (*_Mid2 == (_Elem)0)
+ _Bytes = (int)::strlen(_Mid1) + 1;
+
+
+ default:
+ if (_Bytes == -3)
+ _Bytes = 0;
+ _Mid1 += _Bytes;
+ ++_Mid2;
+ _Ans = ok;
+ }
+ return (_Ans);
+ }
+
+ virtual result do_out(_Statype& _State,
+ const _Elem *_First1, const _Elem *_Last1, const _Elem *& _Mid1,
+ _Byte *_First2, _Byte *_Last2, _Byte *& _Mid2) const
+ {
+ ;
+ ;
+ _Mid1 = _First1, _Mid2 = _First2;
+ result _Ans = _Mid1 == _Last1 ? ok : partial;
+ int _Bytes;
+
+ while (_Mid1 != _Last1 && _Mid2 != _Last2)
+ if (5 <= _Last2 - _Mid2)
+ if ((_Bytes = _Wcrtomb(_Mid2, *_Mid1,
+ &_State, &_Cvt)) < 0)
+ return (error);
+ else
+ ++_Mid1, _Mid2 += _Bytes, _Ans = ok;
+ else
+ {
+ _Byte _Buf[5];
+ _Statype _Stsave = _State;
+
+ if ((_Bytes = _Wcrtomb(_Buf, *_Mid1,
+ &_State, &_Cvt)) < 0)
+ return (error);
+ else if (_Last2 - _Mid2 < _Bytes)
+ {
+ _State = _Stsave;
+ return (_Ans);
+ }
+ else
+ {
+ ::memcpy_s((_Mid2), (_Last2 - _Mid2), (_Buf), (_Bytes));
+ ++_Mid1, _Mid2 += _Bytes, _Ans = ok;
+ }
+ }
+ return (_Ans);
+ }
+
+ virtual result do_unshift(_Statype& _State,
+ _Byte *_First2, _Byte *_Last2, _Byte *& _Mid2) const
+ {
+ ;
+ _Mid2 = _First2;
+ result _Ans = ok;
+ int _Bytes;
+ _Byte _Buf[5];
+ _Statype _Stsave = _State;
+
+ if ((_Bytes = _Wcrtomb(_Buf, L'\0', &_State, &_Cvt)) <= 0)
+ _Ans = error;
+ else if (_Last2 - _Mid2 < --_Bytes)
+ {
+ _State = _Stsave;
+ _Ans = partial;
+ }
+ else if (0 < _Bytes)
+ {
+ ::memcpy_s((_Mid2), (_Last2 - _Mid2), (_Buf), (_Bytes));
+ _Mid2 += _Bytes;
+ }
+ return (_Ans);
+ }
+
+ virtual int do_length(const _Statype& _State, const _Byte *_First1,
+ const _Byte *_Last1, size_t _Count) const
+ {
+ ;
+ int _Wchars;
+ const _Byte *_Mid1;
+ _Statype _Mystate = _State;
+
+ for (_Wchars = 0, _Mid1 = _First1;
+ (size_t)_Wchars < _Count && _Mid1 != _Last1; )
+ {
+ int _Bytes;
+ _Elem _Ch;
+
+ switch (_Bytes = _Mbrtowc((wchar_t *)&_Ch, _Mid1, _Last1 - _Mid1,
+ &_Mystate, &_Cvt))
+ {
+ case -2:
+ return (_Wchars);
+
+ case -1:
+ return (_Wchars);
+
+ case 0:
+ if (_Ch == (_Elem)0)
+ _Bytes = (int)::strlen(_Mid1) + 1;
+
+
+ default:
+ if (_Bytes == -3)
+ _Bytes = 0;
+ _Mid1 += _Bytes;
+ ++_Wchars;
+ }
+ }
+ return (_Wchars);
+ }
+
+ virtual bool do_always_noconv() const throw ()
+ {
+ return (false);
+ }
+
+ virtual int do_max_length() const throw ()
+ {
+ return (5);
+ }
+
+ virtual int do_encoding() const throw ()
+ {
+ return (0);
+ }
+
+private:
+ _Locinfo::_Cvtvec _Cvt;
+ };
+
+
+
+template<class _Elem,
+ class _Byte,
+ class _Statype>
+ class codecvt_byname
+ : public codecvt<_Elem, _Byte, _Statype>
+ {
+public:
+ explicit codecvt_byname(const char *_Locname, size_t _Refs = 0)
+ : codecvt<_Elem, _Byte, _Statype>(_Locname, _Refs)
+ {
+ }
+
+protected:
+ virtual ~codecvt_byname()
+ {
+ }
+ };
+
+
+struct ctype_base
+ : public locale::facet
+ {
+ enum
+ {
+ alnum = 0x4|0x2|0x1|0x100, alpha = 0x2|0x1|0x100,
+ cntrl = 0x20, digit = 0x4, graph = 0x4|0x2|0x10|0x1|0x100,
+ lower = 0x2, print = 0x4|0x2|0x10|0x40|0x1|0x100|0x80,
+ punct = 0x10, space = 0x8|0x40|0x000, upper = 0x1,
+ xdigit = 0x80};
+ typedef short mask;
+
+ ctype_base(size_t _Refs = 0)
+ : locale::facet(_Refs)
+ {
+ }
+
+ ~ctype_base()
+ {
+ }
+
+protected:
+ static void __cdecl _Xran()
+ {
+ throw out_of_range("out_of_range in ctype<T>");
+ }
+ };
+
+
+template<class _Elem>
+ class ctype
+ : public ctype_base
+ {
+public:
+ typedef _Elem char_type;
+
+ bool is(mask _Maskval, _Elem _Ch) const
+ {
+ return (do_is(_Maskval, _Ch));
+ }
+
+ const _Elem * is(const _Elem *_First, const _Elem *_Last,
+ mask *_Dest) const
+ {
+ return (do_is(_First, _Last, _Dest));
+ }
+
+ const _Elem * scan_is(mask _Maskval, const _Elem *_First,
+ const _Elem *_Last) const
+ {
+ return (do_scan_is(_Maskval, _First, _Last));
+ }
+
+ const _Elem * scan_not(mask _Maskval, const _Elem *_First,
+ const _Elem *_Last) const
+ {
+ return (do_scan_not(_Maskval, _First, _Last));
+ }
+
+ _Elem tolower(_Elem _Ch) const
+ {
+ return (do_tolower(_Ch));
+ }
+
+ const _Elem * tolower(_Elem *_First, const _Elem *_Last) const
+ {
+ return (do_tolower(_First, _Last));
+ }
+
+ _Elem toupper(_Elem _Ch) const
+ {
+ return (do_toupper(_Ch));
+ }
+
+ const _Elem * toupper(_Elem *_First, const _Elem *_Last) const
+ {
+ return (do_toupper(_First, _Last));
+ }
+
+ _Elem widen(char _Byte) const
+ {
+ return (do_widen(_Byte));
+ }
+
+ __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
+ const char * widen(const char *_First, const char *_Last,
+ _Elem *_Dest) const
+ {
+#pragma warning(push)
+#pragma warning(disable:4996)
+ return (do_widen(_First, _Last, _Dest));
+#pragma warning(pop)
+ }
+
+ const char * _Widen_s(const char *_First, const char *_Last,
+ _Elem *_Dest, size_t _Dest_size) const
+ {
+ return (_Do_widen_s(_First, _Last, _Dest, _Dest_size));
+ }
+
+ char narrow(_Elem _Ch, char _Dflt = '\0') const
+ {
+ return (do_narrow(_Ch, _Dflt));
+ }
+
+ __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
+ const _Elem * narrow(const _Elem *_First, const _Elem *_Last,
+ char _Dflt, char *_Dest) const
+ {
+
+#pragma warning(push)
+#pragma warning(disable:4996)
+ return (do_narrow(_First, _Last, _Dflt, _Dest));
+#pragma warning(pop)
+ }
+
+ const _Elem * _Narrow_s(const _Elem *_First, const _Elem *_Last,
+ char _Dflt, char *_Dest, size_t _Dest_size) const
+ {
+ return (_Do_narrow_s(_First, _Last, _Dflt, _Dest, _Dest_size));
+ }
+
+ static locale::id id;
+
+ explicit ctype(size_t _Refs = 0)
+ : ctype_base(_Refs)
+ {
+ { _Locinfo _Lobj;
+ _Init(_Lobj);
+ }
+ }
+
+ ctype(const _Locinfo& _Lobj, size_t _Refs = 0)
+ : ctype_base(_Refs)
+ {
+ _Init(_Lobj);
+ }
+
+ static size_t __cdecl _Getcat(const locale::facet **_Ppf = 0)
+ {
+ if (_Ppf != 0 && *_Ppf == 0)
+ *_Ppf = new ctype<_Elem>;
+ return (2);
+ }
+
+protected:
+ virtual ~ctype()
+ {
+ if (_Ctype._Delfl)
+ free((void *)_Ctype._Table);
+ }
+
+protected:
+ void _Init(const _Locinfo& _Lobj)
+ {
+ _Ctype = _Lobj._Getctype();
+ }
+
+ virtual bool do_is(mask _Maskval, _Elem _Ch) const
+ {
+ return ((_Ctype._Table[(unsigned char)narrow(_Ch)]
+ & _Maskval) != 0);
+ }
+
+ virtual const _Elem * do_is(const _Elem *_First, const _Elem *_Last,
+ mask *_Dest) const
+ {
+ ;
+ ;
+ for (; _First != _Last; ++_First, ++_Dest)
+ *_Dest = _Ctype._Table[(unsigned char)narrow(*_First)];
+ return (_First);
+ }
+
+ virtual const _Elem * do_scan_is(mask _Maskval,
+ const _Elem *_First, const _Elem *_Last) const
+ {
+ ;
+ for (; _First != _Last && !is(_Maskval, *_First); ++_First)
+ ;
+ return (_First);
+ }
+
+ virtual const _Elem * do_scan_not(mask _Maskval,
+ const _Elem *_First, const _Elem *_Last) const
+ {
+ ;
+ for (; _First != _Last && is(_Maskval, *_First); ++_First)
+ ;
+ return (_First);
+ }
+
+ virtual _Elem do_tolower(_Elem _Ch) const
+ {
+ unsigned char _Byte = (unsigned char)narrow(_Ch, '\0');
+ if (_Byte == '\0')
+ return (_Ch);
+ else
+ return (widen((char)_Tolower(_Byte, &_Ctype)));
+ }
+
+ virtual const _Elem * do_tolower(_Elem *_First, const _Elem *_Last) const
+ {
+ ;
+ for (; _First != _Last; ++_First)
+ {
+ unsigned char _Byte = (unsigned char)narrow(*_First, '\0');
+ if (_Byte != '\0')
+ *_First = (widen((char)_Tolower(_Byte, &_Ctype)));
+ }
+ return ((const _Elem *)_First);
+ }
+
+ virtual _Elem do_toupper(_Elem _Ch) const
+ {
+ unsigned char _Byte = (unsigned char)narrow(_Ch, '\0');
+ if (_Byte == '\0')
+ return (_Ch);
+ else
+ return (widen((char)_Toupper(_Byte, &_Ctype)));
+ }
+
+ virtual const _Elem * do_toupper(_Elem *_First, const _Elem *_Last) const
+ {
+ ;
+ for (; _First != _Last; ++_First)
+ {
+ unsigned char _Byte = (unsigned char)narrow(*_First, '\0');
+ if (_Byte != '\0')
+ *_First = (widen((char)_Toupper(_Byte, &_Ctype)));
+ }
+ return ((const _Elem *)_First);
+ }
+
+ virtual _Elem do_widen(char _Byte) const
+ {
+ return (_Maklocchr(_Byte, (_Elem *)0, _Cvt));
+ }
+
+ __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
+ virtual const char * do_widen(const char *_First,
+ const char *_Last, _Elem *_Dest) const
+ {
+
+ return _Do_widen_s(_First, _Last, _Dest, _Last - _First);
+ }
+
+ virtual const char * _Do_widen_s(const char *_First,
+ const char *_Last, _Elem *_Dest, size_t _Dest_size) const
+ {
+ ;
+ ;
+ { if (!(_Dest_size >= (size_t)(_Last - _First))) { ((void)0); ::_invalid_parameter_noinfo(); } };
+ for (; _First != _Last; ++_First, ++_Dest)
+ *_Dest = _Maklocchr(*_First, (_Elem *)0, _Cvt);
+ return (_First);
+ }
+
+ char _Donarrow(_Elem _Ch, char _Dflt) const
+ {
+ char _Byte;
+ if (_Ch == (_Elem)0)
+ return ('\0');
+ else if ((_Byte = _Maklocbyte((_Elem)_Ch, _Cvt)) == '\0')
+ return (_Dflt);
+ else
+ return (_Byte);
+ }
+
+ virtual char do_narrow(_Elem _Ch, char _Dflt) const
+ {
+ return (_Donarrow(_Ch, _Dflt));
+ }
+
+ __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
+ virtual const _Elem * do_narrow(const _Elem *_First,
+ const _Elem *_Last, char _Dflt, char *_Dest) const
+ {
+
+ return _Do_narrow_s(_First, _Last, _Dflt, _Dest, _Last - _First);
+ }
+
+ virtual const _Elem * _Do_narrow_s(const _Elem *_First,
+ const _Elem *_Last, char _Dflt,
+ char *_Dest,
+ size_t _Dest_size) const
+ {
+ ;
+ ;
+ { if (!(_Dest_size >= (size_t)(_Last - _First))) { ((void)0); ::_invalid_parameter_noinfo(); } };
+ for (; _First != _Last; ++_First, ++_Dest)
+ *_Dest = _Donarrow(*_First, _Dflt);
+ return (_First);
+ }
+
+private:
+ _Locinfo::_Ctypevec _Ctype;
+ _Locinfo::_Cvtvec _Cvt;
+ };
+
+
+template<class _Elem>
+ locale::id ctype<_Elem>::id;
+
+
+template<> class ctype<char>
+ : public ctype_base
+ {
+ typedef ctype<char> _Myt;
+
+public:
+ typedef char _Elem;
+ typedef _Elem char_type;
+
+ bool is(mask _Maskval, _Elem _Ch) const
+ {
+ return ((_Ctype._Table[(unsigned char)_Ch] & _Maskval) != 0);
+ }
+
+ const _Elem * is(const _Elem *_First,
+ const _Elem *_Last, mask *_Dest) const
+ {
+ ;
+ ;
+ for (; _First != _Last; ++_First, ++_Dest)
+ *_Dest = _Ctype._Table[(unsigned char)*_First];
+ return (_First);
+ }
+
+ const _Elem * scan_is(mask _Maskval,
+ const _Elem *_First, const _Elem *_Last) const
+ {
+ ;
+ for (; _First != _Last && !is(_Maskval, *_First); ++_First)
+ ;
+ return (_First);
+ }
+
+ const _Elem * scan_not(mask _Maskval,
+ const _Elem *_First, const _Elem *_Last) const
+ {
+ ;
+ for (; _First != _Last && is(_Maskval, *_First); ++_First)
+ ;
+ return (_First);
+ }
+
+ _Elem tolower(_Elem _Ch) const
+ {
+ return (do_tolower(_Ch));
+ }
+
+ const _Elem * tolower(_Elem *_First, const _Elem *_Last) const
+ {
+ return (do_tolower(_First, _Last));
+ }
+
+ _Elem toupper(_Elem _Ch) const
+ {
+ return (do_toupper(_Ch));
+ }
+
+ const _Elem * toupper(_Elem *_First, const _Elem *_Last) const
+ {
+ return (do_toupper(_First, _Last));
+ }
+
+ _Elem widen(char _Byte) const
+ {
+ return (do_widen(_Byte));
+ }
+
+ __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
+ const _Elem * widen(const char *_First, const char *_Last,
+ _Elem *_Dest) const
+ {
+
+#pragma warning(push)
+#pragma warning(disable:4996)
+ return (do_widen(_First, _Last, _Dest));
+#pragma warning(pop)
+ }
+
+ const _Elem * _Widen_s(const char *_First, const char *_Last,
+ _Elem *_Dest, size_t _Dest_size) const
+ {
+ return (_Do_widen_s(_First, _Last, _Dest, _Dest_size));
+ }
+
+ _Elem narrow(_Elem _Ch, char _Dflt = '\0') const
+ {
+ return (do_narrow(_Ch, _Dflt));
+ }
+
+ __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
+ const _Elem * narrow(const _Elem *_First, const _Elem *_Last,
+ char _Dflt, char *_Dest) const
+ {
+
+#pragma warning(push)
+#pragma warning(disable:4996)
+ return (do_narrow(_First, _Last, _Dflt, _Dest));
+#pragma warning(pop)
+ }
+
+ const _Elem * _Narrow_s(const _Elem *_First, const _Elem *_Last,
+ char _Dflt, char *_Dest,
+ size_t _Dest_size) const
+ {
+ return (_Do_narrow_s(_First, _Last, _Dflt, _Dest, _Dest_size));
+ }
+
+ static locale::id& __cdecl _Id_func();
+
+
+
+ static locale::id id;
+
+
+ explicit ctype(const mask *_Table = 0,
+ bool _Deletetable = false,
+ size_t _Refs = 0)
+ : ctype_base(_Refs)
+ {
+ { _Locinfo _Lobj;
+ _Init(_Lobj);
+ }
+ if (_Table != 0)
+ {
+ _Tidy();
+ _Ctype._Table = _Table;
+ _Ctype._Delfl = _Deletetable ? -1 : 0;
+ }
+ }
+
+ ctype(const _Locinfo& _Lobj, size_t _Refs = 0)
+ : ctype_base(_Refs)
+ {
+ _Init(_Lobj);
+ }
+
+ static size_t __cdecl _Getcat(const locale::facet **_Ppf = 0)
+ {
+ if (_Ppf != 0 && *_Ppf == 0)
+ *_Ppf = new ctype<_Elem>;
+ return (2);
+ }
+
+ static const size_t table_size = 1 << 8;
+
+protected:
+ virtual ~ctype()
+ {
+ _Tidy();
+ }
+
+protected:
+ void _Init(const _Locinfo& _Lobj)
+ {
+ _Ctype = _Lobj._Getctype();
+ }
+
+ void _Tidy()
+ {
+ if (0 < _Ctype._Delfl)
+ free((void *)_Ctype._Table);
+ else if (_Ctype._Delfl < 0)
+ delete[] (void *)_Ctype._Table;
+ }
+
+ virtual _Elem do_tolower(_Elem _Ch) const
+ {
+ return ((_Elem)_Tolower((unsigned char)_Ch, &_Ctype));
+ }
+
+ virtual const _Elem * do_tolower(_Elem *_First,
+ const _Elem *_Last) const
+ {
+ ;
+ for (; _First != _Last; ++_First)
+ *_First = (_Elem)_Tolower((unsigned char)*_First, &_Ctype);
+ return ((const _Elem *)_First);
+ }
+
+ virtual _Elem do_toupper(_Elem _Ch) const
+ {
+ return ((_Elem)_Toupper((unsigned char)_Ch, &_Ctype));
+ }
+
+ virtual const _Elem * do_toupper(_Elem *_First,
+ const _Elem *_Last) const
+ {
+ ;
+ for (; _First != _Last; ++_First)
+ *_First = (_Elem)_Toupper((unsigned char)*_First, &_Ctype);
+ return ((const _Elem *)_First);
+ }
+
+ virtual _Elem do_widen(char _Byte) const
+ {
+ return (_Byte);
+ }
+
+ __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
+ virtual const _Elem * do_widen(const char *_First,
+ const char *_Last, _Elem *_Dest) const
+ {
+
+ return _Do_widen_s(_First, _Last, _Dest, _Last - _First);
+ }
+
+ virtual const _Elem * _Do_widen_s(const char *_First,
+ const char *_Last, _Elem *_Dest, size_t _Dest_size) const
+ {
+ ;
+ ;
+ { if (!(_Dest_size >= (size_t)(_Last - _First))) { ((void)0); ::_invalid_parameter_noinfo(); } };
+ ::memcpy_s((_Dest), (_Dest_size), (_First), (_Last - _First));
+ return (_Last);
+ }
+
+ virtual _Elem do_narrow(_Elem _Ch, char) const
+ {
+ return (_Ch);
+ }
+
+ __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
+ virtual const _Elem * do_narrow(const _Elem *_First,
+ const _Elem *_Last, char _Dflt,
+ char *_Dest) const
+ {
+
+ return _Do_narrow_s(_First, _Last, _Dflt, _Dest, _Last - _First);
+ }
+
+ virtual const _Elem * _Do_narrow_s(const _Elem *_First,
+ const _Elem *_Last, char, char *_Dest,
+ size_t _Dest_size) const
+ {
+ ;
+ ;
+ { if (!(_Dest_size >= (size_t)(_Last - _First))) { ((void)0); ::_invalid_parameter_noinfo(); } };
+ ::memcpy_s((_Dest), (_Dest_size), (_First), (_Last - _First));
+ return (_Last);
+ }
+
+ const mask * table() const throw ()
+ {
+ return (_Ctype._Table);
+ }
+
+ static const mask *__cdecl classic_table() throw ()
+ {
+ const _Myt& _Ctype_fac = use_facet<_Myt >(locale::classic());
+ return (_Ctype_fac.table());
+ }
+
+private:
+ _Locinfo::_Ctypevec _Ctype;
+ };
+
+
+template<> class ctype<wchar_t>
+ : public ctype_base
+ {
+ typedef ctype<wchar_t> _Myt;
+
+public:
+ typedef wchar_t _Elem;
+ typedef _Elem char_type;
+
+ bool is(mask _Maskval, _Elem _Ch) const
+ {
+ return (do_is(_Maskval, _Ch));
+ }
+
+ const _Elem * is(const _Elem *_First, const _Elem *_Last,
+ mask *_Dest) const
+ {
+ return (do_is(_First, _Last, _Dest));
+ }
+
+ const _Elem * scan_is(mask _Maskval, const _Elem *_First,
+ const _Elem *_Last) const
+ {
+ return (do_scan_is(_Maskval, _First, _Last));
+ }
+
+ const _Elem * scan_not(mask _Maskval, const _Elem *_First,
+ const _Elem *_Last) const
+ {
+ return (do_scan_not(_Maskval, _First, _Last));
+ }
+
+ _Elem tolower(_Elem _Ch) const
+ {
+ return (do_tolower(_Ch));
+ }
+
+ const _Elem * tolower(_Elem *_First, const _Elem *_Last) const
+ {
+ return (do_tolower(_First, _Last));
+ }
+
+ _Elem toupper(_Elem _Ch) const
+ {
+ return (do_toupper(_Ch));
+ }
+
+ const _Elem * toupper(_Elem *_First, const _Elem *_Last) const
+ {
+ return (do_toupper(_First, _Last));
+ }
+
+ _Elem widen(char _Byte) const
+ {
+ return (do_widen(_Byte));
+ }
+
+ __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
+ const char * widen(const char *_First, const char *_Last,
+ _Elem *_Dest) const
+ {
+
+#pragma warning(push)
+#pragma warning(disable:4996)
+ return (do_widen(_First, _Last, _Dest));
+#pragma warning(pop)
+ }
+
+ const char * _Widen_s(const char *_First, const char *_Last,
+ _Elem *_Dest, size_t _Dest_size) const
+ {
+ return (_Do_widen_s(_First, _Last, _Dest, _Dest_size));
+ }
+
+ char narrow(_Elem _Ch, char _Dflt = '\0') const
+ {
+ return (do_narrow(_Ch, _Dflt));
+ }
+
+ __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
+ const _Elem * narrow(const _Elem *_First, const _Elem *_Last,
+ char _Dflt, char *_Dest) const
+ {
+
+#pragma warning(push)
+#pragma warning(disable:4996)
+ return (do_narrow(_First, _Last, _Dflt, _Dest));
+#pragma warning(pop)
+ }
+
+ const _Elem * _Narrow_s(const _Elem *_First, const _Elem *_Last,
+ char _Dflt, char *_Dest,
+ size_t _Dest_size) const
+ {
+ return (_Do_narrow_s(_First, _Last, _Dflt, _Dest, _Dest_size));
+ }
+
+ static locale::id& __cdecl _Id_func();
+
+
+
+ static locale::id id;
+
+
+ explicit ctype(size_t _Refs = 0)
+ : ctype_base(_Refs)
+ {
+ { _Locinfo _Lobj;
+ _Init(_Lobj);
+ }
+ }
+
+ ctype(const _Locinfo& _Lobj, size_t _Refs = 0)
+ : ctype_base(_Refs)
+ {
+ _Init(_Lobj);
+ }
+
+ static size_t __cdecl _Getcat(const locale::facet **_Ppf = 0)
+ {
+ if (_Ppf != 0 && *_Ppf == 0)
+ *_Ppf = new ctype<_Elem>;
+ return (2);
+ }
+
+protected:
+ virtual ~ctype()
+ {
+ if (_Ctype._Delfl)
+ free((void *)_Ctype._Table);
+ }
+
+protected:
+ void _Init(const _Locinfo& _Lobj)
+ {
+ _Ctype = _Lobj._Getctype();
+ _Cvt = _Lobj._Getcvt();
+ }
+
+ virtual bool do_is(mask _Maskval, _Elem _Ch) const
+ {
+ return ((::_Getwctype(_Ch, &_Ctype) & _Maskval) != 0);
+ }
+
+ virtual const wchar_t * do_is(const _Elem *_First,
+ const _Elem *_Last, mask *_Dest) const
+ {
+ ;
+ ;
+ return (::_Getwctypes(_First, _Last, _Dest, &_Ctype));
+ }
+
+ virtual const _Elem * do_scan_is(mask _Maskval,
+ const _Elem *_First, const _Elem *_Last) const
+ {
+ ;
+ for (; _First != _Last && !is(_Maskval, *_First); ++_First)
+ ;
+ return (_First);
+ }
+
+ virtual const _Elem * do_scan_not(mask _Maskval,
+ const _Elem *_First, const _Elem *_Last) const
+ {
+ ;
+ for (; _First != _Last && is(_Maskval, *_First); ++_First)
+ ;
+ return (_First);
+ }
+
+ virtual _Elem do_tolower(_Elem _Ch) const
+ {
+ return (_Towlower(_Ch, &_Ctype));
+ }
+
+ virtual const _Elem * do_tolower(_Elem *_First,
+ const _Elem *_Last) const
+ {
+ ;
+ for (; _First != _Last; ++_First)
+ *_First = _Towlower(*_First, &_Ctype);
+ return ((const _Elem *)_First);
+ }
+
+ virtual _Elem do_toupper(_Elem _Ch) const
+ {
+ return (_Towupper(_Ch, &_Ctype));
+ }
+
+ virtual const _Elem * do_toupper(_Elem *_First,
+ const _Elem *_Last) const
+ {
+ ;
+ for (; _First != _Last; ++_First)
+ *_First = _Towupper(*_First, &_Ctype);
+ return ((const _Elem *)_First);
+ }
+
+ _Elem _Dowiden(char _Byte) const
+ {
+ mbstate_t _Mbst = {0};
+ wchar_t _Wc;
+ return (_Mbrtowc(&_Wc, &_Byte, 1, &_Mbst, &_Cvt) < 0
+ ? (wchar_t)(wint_t)(0xFFFF) : _Wc);
+ }
+
+ virtual _Elem do_widen(char _Byte) const
+ {
+ return (_Dowiden(_Byte));
+ }
+
+ __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
+ virtual const char * do_widen(const char *_First,
+ const char *_Last, _Elem *_Dest) const
+ {
+
+ return _Do_widen_s(_First, _Last, _Dest, _Last - _First);
+ }
+
+ virtual const char * _Do_widen_s(const char *_First,
+ const char *_Last, _Elem *_Dest, size_t _Dest_size) const
+ {
+ ;
+ ;
+ { if (!(_Dest_size >= (size_t)(_Last - _First))) { ((void)0); ::_invalid_parameter_noinfo(); } };
+ for (; _First != _Last; ++_First, ++_Dest)
+ *_Dest = _Dowiden(*_First);
+ return (_First);
+ }
+
+ char _Donarrow(_Elem _Ch, char _Dflt) const
+ {
+ char _Buf[5];
+ mbstate_t _Mbst = {0};
+ return (_Wcrtomb(_Buf, _Ch, &_Mbst, &_Cvt) != 1
+ ? _Dflt : _Buf[0]);
+ }
+
+ virtual char do_narrow(_Elem _Ch, char _Dflt) const
+ {
+ return (_Donarrow(_Ch, _Dflt));
+ }
+
+ __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
+ virtual const _Elem * do_narrow(const _Elem *_First,
+ const _Elem *_Last, char _Dflt,
+ char *_Dest) const
+ {
+
+ return _Do_narrow_s(_First, _Last, _Dflt, _Dest, _Last - _First);
+ }
+
+ virtual const _Elem * _Do_narrow_s(const _Elem *_First,
+ const _Elem *_Last, char _Dflt,
+ char *_Dest,
+ size_t _Dest_size) const
+ {
+ ;
+ ;
+ { if (!(_Dest_size >= (size_t)(_Last - _First))) { ((void)0); ::_invalid_parameter_noinfo(); } };
+ for (; _First != _Last; ++_First, ++_Dest)
+ *_Dest = _Donarrow(*_First, _Dflt);
+ return (_First);
+ }
+
+private:
+ _Locinfo::_Ctypevec _Ctype;
+ _Locinfo::_Cvtvec _Cvt;
+ };
+
+
+
+template<> class ctype<unsigned short>
+ : public ctype_base
+ {
+ typedef ctype<unsigned short> _Myt;
+
+public:
+ typedef unsigned short _Elem;
+ typedef _Elem char_type;
+
+ bool is(mask _Maskval, _Elem _Ch) const
+ {
+ return (do_is(_Maskval, _Ch));
+ }
+
+ const _Elem * is(const _Elem *_First, const _Elem *_Last,
+ mask *_Dest) const
+ {
+ return (do_is(_First, _Last, _Dest));
+ }
+
+ const _Elem * scan_is(mask _Maskval, const _Elem *_First,
+ const _Elem *_Last) const
+ {
+ return (do_scan_is(_Maskval, _First, _Last));
+ }
+
+ const _Elem * scan_not(mask _Maskval, const _Elem *_First,
+ const _Elem *_Last) const
+ {
+ return (do_scan_not(_Maskval, _First, _Last));
+ }
+
+ _Elem tolower(_Elem _Ch) const
+ {
+ return (do_tolower(_Ch));
+ }
+
+ const _Elem * tolower(_Elem *_First, const _Elem *_Last) const
+ {
+ return (do_tolower(_First, _Last));
+ }
+
+ _Elem toupper(_Elem _Ch) const
+ {
+ return (do_toupper(_Ch));
+ }
+
+ const _Elem * toupper(_Elem *_First, const _Elem *_Last) const
+ {
+ return (do_toupper(_First, _Last));
+ }
+
+ _Elem widen(char _Byte) const
+ {
+ return (do_widen(_Byte));
+ }
+
+ __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
+ const char * widen(const char *_First, const char *_Last,
+ _Elem *_Dest) const
+ {
+
+#pragma warning(push)
+#pragma warning(disable:4996)
+ return (do_widen(_First, _Last, _Dest));
+#pragma warning(pop)
+ }
+
+ const char * _Widen_s(const char *_First, const char *_Last,
+ _Elem *_Dest, size_t _Dest_size) const
+ {
+ return (_Do_widen_s(_First, _Last, _Dest, _Dest_size));
+ }
+
+ char narrow(_Elem _Ch, char _Dflt = '\0') const
+ {
+ return (do_narrow(_Ch, _Dflt));
+ }
+
+ __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
+ const _Elem * narrow(const _Elem *_First, const _Elem *_Last,
+ char _Dflt, char *_Dest) const
+ {
+
+#pragma warning(push)
+#pragma warning(disable:4996)
+ return (do_narrow(_First, _Last, _Dflt, _Dest));
+#pragma warning(pop)
+ }
+
+ const _Elem * _Narrow_s(const _Elem *_First, const _Elem *_Last,
+ char _Dflt, char *_Dest,
+ size_t _Dest_size) const
+ {
+ return (_Do_narrow_s(_First, _Last, _Dflt, _Dest, _Dest_size));
+ }
+
+ static locale::id& __cdecl _Id_func();
+
+
+
+ static locale::id id;
+
+
+ explicit ctype(size_t _Refs = 0)
+ : ctype_base(_Refs)
+ {
+ { _Locinfo _Lobj;
+ _Init(_Lobj);
+ }
+ }
+
+ ctype(const _Locinfo& _Lobj, size_t _Refs = 0)
+ : ctype_base(_Refs)
+ {
+ _Init(_Lobj);
+ }
+
+ static size_t __cdecl _Getcat(const locale::facet **_Ppf = 0)
+ {
+ if (_Ppf != 0 && *_Ppf == 0)
+ *_Ppf = new ctype<_Elem>;
+ return (2);
+ }
+
+protected:
+ virtual ~ctype()
+ {
+ if (_Ctype._Delfl)
+ free((void *)_Ctype._Table);
+ }
+
+protected:
+ ctype(const char *_Locname, size_t _Refs = 0)
+ : ctype_base(_Refs)
+ {
+ { _Locinfo _Lobj(_Locname);
+ _Init(_Lobj);
+ }
+ }
+
+ void _Init(const _Locinfo& _Lobj)
+ {
+ _Ctype = _Lobj._Getctype();
+ _Cvt = _Lobj._Getcvt();
+ }
+
+ virtual bool do_is(mask _Maskval, _Elem _Ch) const
+ {
+ return ((::_Getwctype(_Ch, &_Ctype) & _Maskval) != 0);
+ }
+
+ virtual const _Elem * do_is(const _Elem *_First,
+ const _Elem *_Last, mask *_Dest) const
+ {
+ ;
+ ;
+ return ((const _Elem *)::_Getwctypes((const wchar_t *)_First,
+ (const wchar_t *)_Last, _Dest, &_Ctype));
+ }
+
+ virtual const _Elem * do_scan_is(mask _Maskval,
+ const _Elem *_First, const _Elem *_Last) const
+ {
+ ;
+ for (; _First != _Last && !is(_Maskval, *_First); ++_First)
+ ;
+ return (_First);
+ }
+
+ virtual const _Elem * do_scan_not(mask _Maskval,
+ const _Elem *_First, const _Elem *_Last) const
+ {
+ ;
+ for (; _First != _Last && is(_Maskval, *_First); ++_First)
+ ;
+ return (_First);
+ }
+
+ virtual _Elem do_tolower(_Elem _Ch) const
+ {
+ return (_Towlower(_Ch, &_Ctype));
+ }
+
+ virtual const _Elem * do_tolower(_Elem *_First,
+ const _Elem *_Last) const
+ {
+ ;
+ for (; _First != _Last; ++_First)
+ *_First = _Towlower(*_First, &_Ctype);
+ return ((const _Elem *)_First);
+ }
+
+ virtual _Elem do_toupper(_Elem _Ch) const
+ {
+ return (_Towupper(_Ch, &_Ctype));
+ }
+
+ virtual const _Elem * do_toupper(_Elem *_First,
+ const _Elem *_Last) const
+ {
+ ;
+ for (; _First != _Last; ++_First)
+ *_First = _Towupper(*_First, &_Ctype);
+ return ((const _Elem *)_First);
+ }
+
+ _Elem _Dowiden(char _Byte) const
+ {
+ mbstate_t _Mbst = {0};
+ unsigned short _Wc;
+ return (_Mbrtowc((wchar_t *)&_Wc, &_Byte, 1, &_Mbst, &_Cvt) < 0
+ ? (unsigned short)(wint_t)(0xFFFF) : _Wc);
+ }
+
+ virtual _Elem do_widen(char _Byte) const
+ {
+ return (_Dowiden(_Byte));
+ }
+
+ __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
+ virtual const char * do_widen(const char *_First,
+ const char *_Last, _Elem *_Dest) const
+ {
+
+ return _Do_widen_s(_First, _Last, _Dest, _Last - _First);
+ }
+
+ virtual const char * _Do_widen_s(const char *_First,
+ const char *_Last, _Elem *_Dest, size_t _Dest_size) const
+ {
+ ;
+ ;
+ { if (!(_Dest_size >= (size_t)(_Last - _First))) { ((void)0); ::_invalid_parameter_noinfo(); } };
+ for (; _First != _Last; ++_First, ++_Dest)
+ *_Dest = _Dowiden(*_First);
+ return (_First);
+ }
+
+ char _Donarrow(_Elem _Ch, char _Dflt) const
+ {
+ char _Buf[5];
+ mbstate_t _Mbst = {0};
+ return (_Wcrtomb(_Buf, _Ch, &_Mbst, &_Cvt) != 1
+ ? _Dflt : _Buf[0]);
+ }
+
+ virtual char do_narrow(_Elem _Ch, char _Dflt) const
+ {
+ return (_Donarrow(_Ch, _Dflt));
+ }
+
+ __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
+ virtual const _Elem * do_narrow(const _Elem *_First,
+ const _Elem *_Last, char _Dflt, char *_Dest) const
+ {
+
+ return _Do_narrow_s(_First, _Last, _Dflt, _Dest, _Last - _First);
+ }
+
+ virtual const _Elem * _Do_narrow_s(const _Elem *_First,
+ const _Elem *_Last, char _Dflt,
+ char *_Dest,
+ size_t _Dest_size) const
+ {
+ ;
+ ;
+ { if (!(_Dest_size >= (size_t)(_Last - _First))) { ((void)0); ::_invalid_parameter_noinfo(); } };
+ for (; _First != _Last; ++_First, ++_Dest)
+ *_Dest = _Donarrow(*_First, _Dflt);
+ return (_First);
+ }
+
+private:
+ _Locinfo::_Ctypevec _Ctype;
+ _Locinfo::_Cvtvec _Cvt;
+ };
+
+
+
+template<class _Elem>
+ class ctype_byname
+ : public ctype<_Elem>
+ {
+public:
+ explicit ctype_byname(const char *_Locname, size_t _Refs = 0)
+ : ctype<_Elem>(_Locname, _Refs)
+ {
+ }
+
+protected:
+ virtual ~ctype_byname()
+ {
+ }
+ };
+
+
+template<> class ctype_byname<char>
+ : public ctype<char>
+ {
+public:
+ explicit ctype_byname(const char *_Locname, size_t _Refs = 0)
+ : ctype<char>(_Locname, _Refs)
+ {
+ }
+
+protected:
+ virtual ~ctype_byname()
+ {
+ }
+ };
+
+
+
+
+
+
+}
+
+
+#pragma warning(pop)
+#pragma pack(pop)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma pack(push,8)
+#pragma warning(push,3)
+#pragma warning(disable:4412)
+
+
+namespace std {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+template<class _Dummy>
+ class _Iosb
+ {
+public:
+ enum _Dummy_enum {_Dummy_enum_val = 1};
+
+ enum _Fmtflags
+ {
+ _Fmtmask = 0xffff, _Fmtzero = 0};
+
+ static const _Fmtflags skipws = (_Fmtflags)0x0001;
+ static const _Fmtflags unitbuf = (_Fmtflags)0x0002;
+ static const _Fmtflags uppercase = (_Fmtflags)0x0004;
+ static const _Fmtflags showbase = (_Fmtflags)0x0008;
+ static const _Fmtflags showpoint = (_Fmtflags)0x0010;
+ static const _Fmtflags showpos = (_Fmtflags)0x0020;
+ static const _Fmtflags left = (_Fmtflags)0x0040;
+ static const _Fmtflags right = (_Fmtflags)0x0080;
+ static const _Fmtflags internal = (_Fmtflags)0x0100;
+ static const _Fmtflags dec = (_Fmtflags)0x0200;
+ static const _Fmtflags oct = (_Fmtflags)0x0400;
+ static const _Fmtflags hex = (_Fmtflags)0x0800;
+ static const _Fmtflags scientific = (_Fmtflags)0x1000;
+ static const _Fmtflags fixed = (_Fmtflags)0x2000;
+ static const _Fmtflags boolalpha = (_Fmtflags)0x4000;
+ static const _Fmtflags _Stdio = (_Fmtflags)0x8000;
+ static const _Fmtflags adjustfield = (_Fmtflags)(0x0040
+ | 0x0080 | 0x0100);
+ static const _Fmtflags basefield = (_Fmtflags)(0x0200
+ | 0x0400 | 0x0800);
+ static const _Fmtflags floatfield = (_Fmtflags)(0x1000
+ | 0x2000);
+
+ enum _Iostate
+ {
+ _Statmask = 0x17};
+
+ static const _Iostate goodbit = (_Iostate)0x0;
+ static const _Iostate eofbit = (_Iostate)0x1;
+ static const _Iostate failbit = (_Iostate)0x2;
+ static const _Iostate badbit = (_Iostate)0x4;
+ static const _Iostate _Hardfail = (_Iostate)0x10;
+
+ enum _Openmode
+ {
+ _Openmask = 0xff};
+
+ static const _Openmode in = (_Openmode)0x01;
+ static const _Openmode out = (_Openmode)0x02;
+ static const _Openmode ate = (_Openmode)0x04;
+ static const _Openmode app = (_Openmode)0x08;
+ static const _Openmode trunc = (_Openmode)0x10;
+ static const _Openmode _Nocreate = (_Openmode)0x40;
+ static const _Openmode _Noreplace = (_Openmode)0x80;
+ static const _Openmode binary = (_Openmode)0x20;
+
+ enum _Seekdir
+ {
+ _Seekmask = 0x3};
+ static const _Seekdir beg = (_Seekdir)0;
+ static const _Seekdir cur = (_Seekdir)1;
+ static const _Seekdir end = (_Seekdir)2;
+
+ enum
+ {
+ _Openprot = 0x40};
+ };
+
+template<class _Dummy>
+ const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::skipws;
+template<class _Dummy>
+ const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::unitbuf;
+template<class _Dummy>
+ const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::uppercase;
+template<class _Dummy>
+ const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::showbase;
+template<class _Dummy>
+ const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::showpoint;
+template<class _Dummy>
+ const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::showpos;
+template<class _Dummy>
+ const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::left;
+template<class _Dummy>
+ const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::right;
+template<class _Dummy>
+ const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::internal;
+template<class _Dummy>
+ const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::dec;
+template<class _Dummy>
+ const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::oct;
+template<class _Dummy>
+ const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::hex;
+template<class _Dummy>
+ const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::scientific;
+template<class _Dummy>
+ const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::fixed;
+template<class _Dummy>
+ const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::boolalpha;
+template<class _Dummy>
+ const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::_Stdio;
+template<class _Dummy>
+ const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::adjustfield;
+template<class _Dummy>
+ const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::basefield;
+template<class _Dummy>
+ const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::floatfield;
+
+template<class _Dummy>
+ const typename _Iosb<_Dummy>::_Iostate _Iosb<_Dummy>::goodbit;
+template<class _Dummy>
+ const typename _Iosb<_Dummy>::_Iostate _Iosb<_Dummy>::eofbit;
+template<class _Dummy>
+ const typename _Iosb<_Dummy>::_Iostate _Iosb<_Dummy>::failbit;
+template<class _Dummy>
+ const typename _Iosb<_Dummy>::_Iostate _Iosb<_Dummy>::badbit;
+template<class _Dummy>
+ const typename _Iosb<_Dummy>::_Iostate _Iosb<_Dummy>::_Hardfail;
+
+template<class _Dummy>
+ const typename _Iosb<_Dummy>::_Openmode _Iosb<_Dummy>::in;
+template<class _Dummy>
+ const typename _Iosb<_Dummy>::_Openmode _Iosb<_Dummy>::out;
+template<class _Dummy>
+ const typename _Iosb<_Dummy>::_Openmode _Iosb<_Dummy>::ate;
+template<class _Dummy>
+ const typename _Iosb<_Dummy>::_Openmode _Iosb<_Dummy>::app;
+template<class _Dummy>
+ const typename _Iosb<_Dummy>::_Openmode _Iosb<_Dummy>::trunc;
+template<class _Dummy>
+ const typename _Iosb<_Dummy>::_Openmode _Iosb<_Dummy>::_Nocreate;
+template<class _Dummy>
+ const typename _Iosb<_Dummy>::_Openmode _Iosb<_Dummy>::_Noreplace;
+template<class _Dummy>
+ const typename _Iosb<_Dummy>::_Openmode _Iosb<_Dummy>::binary;
+
+template<class _Dummy>
+ const typename _Iosb<_Dummy>::_Seekdir _Iosb<_Dummy>::beg;
+template<class _Dummy>
+ const typename _Iosb<_Dummy>::_Seekdir _Iosb<_Dummy>::cur;
+template<class _Dummy>
+ const typename _Iosb<_Dummy>::_Seekdir _Iosb<_Dummy>::end;
+
+
+class ios_base
+ : public _Iosb<int>
+ {
+public:
+ typedef int fmtflags;
+ typedef int iostate;
+ typedef int openmode;
+ typedef int seekdir;
+
+ typedef std::streamoff streamoff;
+ typedef std::streampos streampos;
+
+ enum event
+ {
+ erase_event, imbue_event, copyfmt_event};
+
+ typedef void (__cdecl *event_callback)(event, ios_base&, int);
+ typedef unsigned int io_state, open_mode, seek_dir;
+
+
+ class failure
+ : public runtime_error
+ {
+ public:
+ explicit failure(const string &_Message)
+ : runtime_error(_Message)
+ {
+ }
+
+ virtual ~failure() throw ()
+ {
+ }
+
+
+
+
+
+
+
+
+
+
+ };
+
+
+ class Init
+ {
+ public:
+ Init()
+ {
+ _Init_ctor(this);
+ }
+
+ ~Init()
+ {
+ _Init_dtor(this);
+ }
+
+ private:
+ static void __cdecl _Init_ctor(Init *);
+ static void __cdecl _Init_dtor(Init *);
+
+ static int& __cdecl _Init_cnt_func();
+
+
+
+ static int _Init_cnt;
+
+ };
+
+ ios_base& operator=(const ios_base& _Right)
+ {
+ if (this != &_Right)
+ {
+ _Mystate = _Right._Mystate;
+ copyfmt(_Right);
+ }
+ return (*this);
+ }
+
+ operator void *() const
+ {
+ return (fail() ? 0 : (void *)this);
+ }
+
+ bool operator!() const
+ {
+ return (fail());
+ }
+
+ void clear(iostate _State, bool _Reraise)
+ {
+ _Mystate = (iostate)(_State & _Statmask);
+ if ((_Mystate & _Except) == 0)
+ ;
+ else if (_Reraise)
+ throw;
+ else if (_Mystate & _Except & badbit)
+ throw failure("ios_base::badbit set");
+ else if (_Mystate & _Except & failbit)
+ throw failure("ios_base::failbit set");
+ else
+ throw failure("ios_base::eofbit set");
+ }
+
+ void clear(iostate _State = goodbit)
+ {
+ clear(_State, false);
+ }
+
+ void clear(io_state _State)
+ {
+ clear((iostate)_State);
+ }
+
+ iostate rdstate() const
+ {
+ return (_Mystate);
+ }
+
+
+ void setstate(iostate _State, bool _Exreraise)
+ {
+ if (_State != goodbit)
+ clear((iostate)((int)rdstate() | (int)_State), _Exreraise);
+ }
+
+ void setstate(iostate _State)
+ {
+ if (_State != goodbit)
+ clear((iostate)((int)rdstate() | (int)_State), false);
+ }
+
+ void setstate(io_state _State)
+ {
+ setstate((iostate)_State);
+ }
+
+ bool good() const
+ {
+ return (rdstate() == goodbit);
+ }
+
+ bool eof() const
+ {
+ return ((int)rdstate() & (int)eofbit);
+ }
+
+ bool fail() const
+ {
+ return (((int)rdstate()
+ & ((int)badbit | (int)failbit)) != 0);
+ }
+
+ bool bad() const
+ {
+ return (((int)rdstate() & (int)badbit) != 0);
+ }
+
+
+
+
+ iostate exceptions() const
+ {
+ return (_Except);
+ }
+
+ void exceptions(iostate _Newexcept)
+ {
+ _Except = (iostate)((int)_Newexcept & (int)_Statmask);
+ clear(_Mystate);
+ }
+
+ void exceptions(io_state _State)
+ {
+ exceptions((iostate)_State);
+ }
+
+ fmtflags flags() const
+ {
+ return (_Fmtfl);
+ }
+
+ fmtflags flags(fmtflags _Newfmtflags)
+ {
+ fmtflags _Oldfmtflags = _Fmtfl;
+ _Fmtfl = (fmtflags)((int)_Newfmtflags & (int)_Fmtmask);
+ return (_Oldfmtflags);
+ }
+
+ fmtflags setf(fmtflags _Newfmtflags)
+ {
+ ios_base::fmtflags _Oldfmtflags = _Fmtfl;
+ _Fmtfl = (fmtflags)((int)_Fmtfl
+ | (int)_Newfmtflags & (int)_Fmtmask);
+ return (_Oldfmtflags);
+ }
+
+ fmtflags setf(fmtflags _Newfmtflags, fmtflags _Mask)
+ {
+ ios_base::fmtflags _Oldfmtflags = _Fmtfl;
+ _Fmtfl = (fmtflags)(((int)_Fmtfl & (int)~_Mask)
+ | ((int)_Newfmtflags & (int)_Mask & (int)_Fmtmask));
+ return (_Oldfmtflags);
+ }
+
+ void unsetf(fmtflags _Mask)
+ {
+ _Fmtfl = (fmtflags)((int)_Fmtfl & (int)~_Mask);
+ }
+
+ streamsize precision() const
+ {
+ return (_Prec);
+ }
+
+ streamsize precision(streamsize _Newprecision)
+ {
+ streamsize _Oldprecision = _Prec;
+ _Prec = _Newprecision;
+ return (_Oldprecision);
+ }
+
+ streamsize width() const
+ {
+ return (_Wide);
+ }
+
+ streamsize width(streamsize _Newwidth)
+ {
+ streamsize _Oldwidth = _Wide;
+ _Wide = _Newwidth;
+ return (_Oldwidth);
+ }
+
+ locale getloc() const
+ {
+ return (*_Ploc);
+ }
+
+ locale imbue(const locale& _Loc)
+ {
+ locale _Oldlocale = *_Ploc;
+ *_Ploc = _Loc;
+ _Callfns(imbue_event);
+ return (_Oldlocale);
+ }
+
+ static int __cdecl xalloc()
+ {
+ { ::std:: _Lockit _Lock(2);
+ return (_Index++);
+ }
+ }
+
+ long& iword(int _Idx)
+ {
+ return (_Findarr(_Idx)._Lo);
+ }
+
+ void *& pword(int _Idx)
+ {
+ return (_Findarr(_Idx)._Vp);
+ }
+
+ void register_callback(event_callback _Pfn, int _Idx)
+ {
+ _Calls = new _Fnarray(_Idx, _Pfn, _Calls);
+ }
+
+ ios_base& copyfmt(const ios_base& _Other)
+ {
+ if (this != &_Other)
+ {
+ _Tidy();
+ *_Ploc = *_Other._Ploc;
+ _Fmtfl = _Other._Fmtfl;
+ _Prec = _Other._Prec;
+ _Wide = _Other._Wide;
+ _Iosarray *_Ptr = _Other._Arr;
+
+ for (_Arr = 0; _Ptr != 0; _Ptr = _Ptr->_Next)
+ if (_Ptr->_Lo != 0 || _Ptr->_Vp != 0)
+ {
+ iword(_Ptr->_Index) = _Ptr->_Lo;
+ pword(_Ptr->_Index) = _Ptr->_Vp;
+ }
+
+ for (_Fnarray *_Q = _Other._Calls; _Q != 0; _Q = _Q->_Next)
+ register_callback(_Q->_Pfn, _Q->_Index);
+
+ _Callfns(copyfmt_event);
+ exceptions(_Other._Except);
+ }
+ return (*this);
+ }
+
+
+ virtual ~ios_base()
+ {
+ _Ios_base_dtor(this);
+ }
+
+ static bool __cdecl sync_with_stdio(bool _Newsync = true)
+ {
+ { ::std:: _Lockit _Lock(2);
+ const bool _Oldsync = _Sync;
+ _Sync = _Newsync;
+ return (_Oldsync);
+ }
+ }
+
+ static void __cdecl _Addstd(ios_base *);
+ size_t _Stdstr;
+
+protected:
+ ios_base()
+ {
+ }
+
+ void _Init()
+ {
+ _Ploc = 0;
+ _Except = goodbit;
+ _Fmtfl = skipws | dec;
+ _Prec = 6;
+ _Wide = 0;
+ _Arr = 0;
+ _Calls = 0;
+ clear(goodbit);
+ _Ploc = new locale;
+ }
+
+private:
+
+ struct _Iosarray
+ {
+ public:
+ _Iosarray(int _Idx, _Iosarray *_Link)
+ : _Next(_Link), _Index(_Idx), _Lo(0), _Vp(0)
+ {
+ }
+
+ _Iosarray *_Next;
+ int _Index;
+ long _Lo;
+ void *_Vp;
+ };
+
+
+ struct _Fnarray
+ {
+ _Fnarray(int _Idx, event_callback _Pnew, _Fnarray *_Link)
+ : _Next(_Link), _Index(_Idx), _Pfn(_Pnew)
+ {
+ }
+
+ _Fnarray *_Next;
+ int _Index;
+ event_callback _Pfn;
+ };
+
+ void _Callfns(event _Ev)
+ {
+ for (_Fnarray *_Ptr = _Calls; _Ptr != 0; _Ptr = _Ptr->_Next)
+ (*_Ptr->_Pfn)(_Ev, *this, _Ptr->_Index);
+ }
+
+ _Iosarray& _Findarr(int _Idx)
+ {
+ _Iosarray *_Ptr, *_Q;
+
+ for (_Ptr = _Arr, _Q = 0; _Ptr != 0; _Ptr = _Ptr->_Next)
+ if (_Ptr->_Index == _Idx)
+ return (*_Ptr);
+ else if (_Q == 0 && _Ptr->_Lo == 0 && _Ptr->_Vp == 0)
+ _Q = _Ptr;
+
+ if (_Q != 0)
+ {
+ _Q->_Index = _Idx;
+ return (*_Q);
+ }
+
+ _Arr = new _Iosarray(_Idx, _Arr);
+ return (*_Arr);
+ }
+
+ void __cdecl _Tidy()
+ {
+ _Callfns(erase_event);
+ _Iosarray *_Q1, *_Q2;
+
+ for (_Q1 = _Arr; _Q1 != 0; _Q1 = _Q2)
+ _Q2 = _Q1->_Next, delete (_Q1);
+ _Arr = 0;
+
+ _Fnarray *_Q3, *_Q4;
+ for (_Q3 = _Calls; _Q3 != 0; _Q3 = _Q4)
+ _Q4 = _Q3->_Next, delete (_Q3);
+ _Calls = 0;
+ }
+
+ static void __cdecl _Ios_base_dtor(ios_base *);
+
+ iostate _Mystate;
+ iostate _Except;
+ fmtflags _Fmtfl;
+ streamsize _Prec;
+ streamsize _Wide;
+ _Iosarray *_Arr;
+ _Fnarray *_Calls;
+ locale *_Ploc;
+
+
+
+
+
+ static int _Index;
+ static bool _Sync;
+
+ static int& __cdecl _Index_func();
+ static bool& __cdecl _Sync_func();
+ };
+
+
+
+
+
+}
+
+
+#pragma warning(pop)
+#pragma pack(pop)
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma pack(push,8)
+#pragma warning(push,3)
+
+
+namespace std {
+
+
+template<class _Elem,
+ class _Traits>
+ class basic_streambuf
+ {
+
+ basic_streambuf(const basic_streambuf<_Elem, _Traits>&);
+ basic_streambuf<_Elem, _Traits>&
+ operator=(const basic_streambuf<_Elem, _Traits>&);
+
+
+protected:
+ basic_streambuf()
+ : _Plocale(new(locale))
+ {
+ _Init();
+ }
+
+ basic_streambuf(_Uninitialized)
+ {
+ }
+
+public:
+ typedef basic_streambuf<_Elem, _Traits> _Myt;
+ typedef _Elem char_type;
+ typedef _Traits traits_type;
+
+ virtual ~basic_streambuf()
+ {
+ delete (_Plocale);
+ }
+
+ typedef typename _Traits::int_type int_type;
+ typedef typename _Traits::pos_type pos_type;
+ typedef typename _Traits::off_type off_type;
+
+ pos_type pubseekoff(off_type _Off, ios_base::seekdir _Way,
+ ios_base::openmode _Mode = ios_base::in | ios_base::out)
+ {
+ return (seekoff(_Off, _Way, _Mode));
+ }
+
+ pos_type pubseekoff(off_type _Off, ios_base::seek_dir _Way,
+ ios_base::open_mode _Mode)
+ {
+ return (pubseekoff(_Off, (ios_base::seekdir)_Way,
+ (ios_base::openmode)_Mode));
+ }
+
+ pos_type pubseekpos(pos_type _Pos,
+ ios_base::openmode _Mode = ios_base::in | ios_base::out)
+ {
+ return (seekpos(_Pos, _Mode));
+ }
+
+ pos_type pubseekpos(pos_type _Pos, ios_base::open_mode _Mode)
+ {
+ return (seekpos(_Pos, (ios_base::openmode)_Mode));
+ }
+
+ _Myt *pubsetbuf(_Elem *_Buffer, streamsize _Count)
+ {
+ return (setbuf(_Buffer, _Count));
+ }
+
+ locale pubimbue(const locale &_Newlocale)
+ {
+ locale _Oldlocale = *_Plocale;
+ imbue(_Newlocale);
+ *_Plocale = _Newlocale;
+ return (_Oldlocale);
+ }
+
+ locale getloc() const
+ {
+ return (*_Plocale);
+ }
+
+ streamsize in_avail()
+ {
+ streamsize _Res = _Gnavail();
+ return (0 < _Res ? _Res : showmanyc());
+ }
+
+ int pubsync()
+ {
+ return (sync());
+ }
+
+ int_type sbumpc()
+ {
+ return (0 < _Gnavail()
+ ? _Traits::to_int_type(*_Gninc()) : uflow());
+ }
+
+ int_type sgetc()
+ {
+ return (0 < _Gnavail()
+ ? _Traits::to_int_type(*gptr()) : underflow());
+ }
+
+ streamsize _Sgetn_s(_Elem *_Ptr, size_t _Ptr_size, streamsize _Count)
+ {
+ return _Xsgetn_s(_Ptr, _Ptr_size, _Count);
+ }
+
+ __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
+ streamsize sgetn(_Elem *_Ptr, streamsize _Count)
+ {
+#pragma warning(push)
+#pragma warning(disable:4996)
+ return xsgetn(_Ptr, _Count);
+#pragma warning(pop)
+ }
+
+ int_type snextc()
+ {
+ return (1 < _Gnavail()
+ ? _Traits::to_int_type(*_Gnpreinc())
+ : _Traits::eq_int_type(_Traits::eof(), sbumpc())
+ ? _Traits::eof() : sgetc());
+ }
+
+ int_type sputbackc(_Elem _Ch)
+ {
+ return (gptr() != 0 && eback() < gptr()
+ && _Traits::eq(_Ch, gptr()[-1])
+ ? _Traits::to_int_type(*_Gndec())
+ : pbackfail(_Traits::to_int_type(_Ch)));
+ }
+
+ void stossc()
+ {
+ if (0 < _Gnavail())
+ _Gninc();
+ else
+ uflow();
+ }
+
+ int_type sungetc()
+ {
+ return (gptr() != 0 && eback() < gptr()
+ ? _Traits::to_int_type(*_Gndec()) : pbackfail());
+ }
+
+ int_type sputc(_Elem _Ch)
+ {
+ return (0 < _Pnavail()
+ ? _Traits::to_int_type(*_Pninc() = _Ch)
+ : overflow(_Traits::to_int_type(_Ch)));
+ }
+
+ streamsize sputn(const _Elem *_Ptr, streamsize _Count)
+ {
+ return (xsputn(_Ptr, _Count));
+ }
+
+ void _Lock()
+ {
+ _Mylock._Lock();
+ }
+
+ void _Unlock()
+ {
+ _Mylock._Unlock();
+ }
+
+
+protected:
+ _Elem *eback() const
+ {
+ return (*_IGfirst);
+ }
+
+ _Elem *gptr() const
+ {
+ return (*_IGnext);
+ }
+
+ _Elem *pbase() const
+ {
+ return (*_IPfirst);
+ }
+
+ _Elem *pptr() const
+ {
+ return (*_IPnext);
+ }
+
+ _Elem *egptr() const
+ {
+ return (*_IGnext + *_IGcount);
+ }
+
+ void gbump(int _Off)
+ {
+ *_IGcount -= _Off;
+ *_IGnext += _Off;
+ }
+
+ void setg(_Elem *_First, _Elem *_Next, _Elem *_Last)
+ {
+ *_IGfirst = _First;
+ *_IGnext = _Next;
+ *_IGcount = (int)(_Last - _Next);
+ }
+
+ _Elem *epptr() const
+ {
+ return (*_IPnext + *_IPcount);
+ }
+
+ _Elem *_Gndec()
+ {
+ ++*_IGcount;
+ return (--*_IGnext);
+ }
+
+ _Elem *_Gninc()
+ {
+ --*_IGcount;
+ return ((*_IGnext)++);
+ }
+
+ _Elem *_Gnpreinc()
+ {
+ --*_IGcount;
+ return (++(*_IGnext));
+ }
+
+ streamsize _Gnavail() const
+ {
+ return (*_IGnext != 0 ? *_IGcount : 0);
+ }
+
+ void pbump(int _Off)
+ {
+ *_IPcount -= _Off;
+ *_IPnext += _Off;
+ }
+
+ void setp(_Elem *_First, _Elem *_Last)
+ {
+ *_IPfirst = _First;
+ *_IPnext = _First;
+ *_IPcount = (int)(_Last - _First);
+ }
+
+ void setp(_Elem *_First, _Elem *_Next, _Elem *_Last)
+ {
+ *_IPfirst = _First;
+ *_IPnext = _Next;
+ *_IPcount = (int)(_Last - _Next);
+ }
+
+ _Elem *_Pninc()
+ {
+ --*_IPcount;
+ return ((*_IPnext)++);
+ }
+
+ streamsize _Pnavail() const
+ {
+ return (*_IPnext != 0 ? *_IPcount : 0);
+ }
+
+ void _Init()
+ {
+ _IGfirst = &_Gfirst, _IPfirst = &_Pfirst;
+ _IGnext = &_Gnext, _IPnext = &_Pnext;
+ _IGcount = &_Gcount, _IPcount = &_Pcount;
+ setp(0, 0), setg(0, 0, 0);
+ }
+
+ void _Init(_Elem **_Gf, _Elem **_Gn, int *_Gc,
+ _Elem **_Pf, _Elem **_Pn, int *_Pc)
+ {
+ _IGfirst = _Gf, _IPfirst = _Pf;
+ _IGnext = _Gn, _IPnext = _Pn;
+ _IGcount = _Gc, _IPcount = _Pc;
+ }
+
+ virtual int_type overflow(int_type = _Traits::eof())
+ {
+ return (_Traits::eof());
+ }
+
+ virtual int_type pbackfail(int_type = _Traits::eof())
+ {
+ return (_Traits::eof());
+ }
+
+ virtual streamsize showmanyc()
+ {
+ return (0);
+ }
+
+ virtual int_type underflow()
+ {
+ return (_Traits::eof());
+ }
+
+ virtual int_type uflow()
+ {
+ return (_Traits::eq_int_type(_Traits::eof(), underflow())
+ ? _Traits::eof() : _Traits::to_int_type(*_Gninc()));
+ }
+
+ __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
+ virtual streamsize xsgetn(_Elem * _Ptr,
+ streamsize _Count)
+ {
+
+ return _Xsgetn_s(_Ptr, (size_t)-1, _Count);
+ }
+
+ virtual streamsize _Xsgetn_s(_Elem * _Ptr,
+ size_t _Ptr_size, streamsize _Count)
+ {
+ int_type _Meta;
+ streamsize _Stream_size, _Size, _Copied;
+
+ for (_Copied = 0; 0 < _Count; )
+ if (0 < (_Stream_size = _Gnavail()))
+ {
+ _Size = _Stream_size;
+ if (_Count < _Size)
+ _Size = _Count;
+ _Traits_helper::copy_s<_Traits>(_Ptr, _Ptr_size, gptr(), _Size);
+ _Ptr += _Size;
+ _Copied += _Size;
+ _Count -= _Size;
+ gbump((int)_Size);
+ }
+ else if (_Traits::eq_int_type(_Traits::eof(), _Meta = uflow()))
+ break;
+ else
+ {
+ *_Ptr++ = _Traits::to_char_type(_Meta);
+ ++_Copied;
+ --_Count;
+ }
+
+ return (_Copied);
+ }
+
+ virtual streamsize xsputn(const _Elem *_Ptr,
+ streamsize _Count)
+ {
+ streamsize _Stream_size, _Size, _Copied;
+
+ for (_Copied = 0; 0 < _Count; )
+ if (0 < (_Stream_size = _Pnavail()))
+ {
+ _Size = _Stream_size;
+ if (_Count < _Size)
+ _Size = _Count;
+ _Traits_helper::copy_s<_Traits>(pptr(), _Stream_size, _Ptr, _Size);
+ _Ptr += _Size;
+ _Copied += _Size;
+ _Count -= _Size;
+ pbump((int)_Size);
+ }
+ else if (_Traits::eq_int_type(_Traits::eof(),
+ overflow(_Traits::to_int_type(*_Ptr))))
+ break;
+ else
+ {
+ ++_Ptr;
+ ++_Copied;
+ --_Count;
+ }
+
+ return (_Copied);
+ }
+
+ virtual pos_type seekoff(off_type, ios_base::seekdir,
+ ios_base::openmode = ios_base::in | ios_base::out)
+ {
+ return (streampos(_BADOFF));
+ }
+
+ virtual pos_type seekpos(pos_type,
+ ios_base::openmode = ios_base::in | ios_base::out)
+ {
+ return (streampos(_BADOFF));
+ }
+
+ virtual _Myt * setbuf(_Elem *, streamsize)
+ {
+ return (this);
+ }
+
+ virtual int sync()
+ {
+ return (0);
+ }
+
+ virtual void imbue(const locale&)
+ {
+ }
+
+private:
+ _Mutex _Mylock;
+ _Elem *_Gfirst;
+ _Elem *_Pfirst;
+ _Elem **_IGfirst;
+ _Elem **_IPfirst;
+ _Elem *_Gnext;
+ _Elem *_Pnext;
+ _Elem **_IGnext;
+ _Elem **_IPnext;
+ int _Gcount;
+ int _Pcount;
+ int *_IGcount;
+ int *_IPcount;
+ locale *_Plocale;
+ };
+
+
+
+
+
+
+
+
+
+}
+
+
+#pragma warning(pop)
+#pragma pack(pop)
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma pack(push,8)
+#pragma warning(push,3)
+
+
+
+
+
+extern "C" {
+
+extern long __cdecl _Stolx(const char *, char **,
+ int, int *);
+extern unsigned long __cdecl _Stoulx(const char *,
+ char **, int, int *);
+extern float __cdecl _Stofx(const char *, char **,
+ long, int *);
+extern double __cdecl _Stodx(const char *, char **,
+ long, int *);
+extern long double __cdecl _Stoldx(const char *,
+ char **, long, int *);
+
+}
+
+
+
+
+
+
+
+
+
+namespace std {
+
+
+
+
+template<class _Elem>
+ class numpunct
+ : public locale::facet
+ {
+public:
+ typedef basic_string<_Elem, char_traits<_Elem>, allocator<_Elem> >
+ string_type;
+ typedef _Elem char_type;
+
+ static locale::id id;
+
+ _Elem decimal_point() const
+ {
+ return (do_decimal_point());
+ }
+
+ _Elem thousands_sep() const
+ {
+ return (do_thousands_sep());
+ }
+
+ string grouping() const
+ {
+ return (do_grouping());
+ }
+
+ string_type falsename() const
+ {
+ return (do_falsename());
+ }
+
+ string_type truename() const
+ {
+ return (do_truename());
+ }
+
+ explicit numpunct(size_t _Refs = 0)
+ : locale::facet(_Refs)
+ {
+ { _Locinfo _Lobj;
+ _Init(_Lobj);
+ if (_Kseparator == 0)
+ _Kseparator =
+ _Maklocchr(',', (_Elem *)0, _Lobj._Getcvt());
+ }
+ }
+
+ numpunct(const _Locinfo& _Lobj, size_t _Refs = 0)
+ : locale::facet(_Refs)
+ {
+ _Init(_Lobj);
+ }
+
+ static size_t __cdecl _Getcat(const locale::facet **_Ppf = 0)
+ {
+ if (_Ppf != 0 && *_Ppf == 0)
+ *_Ppf = new numpunct<_Elem>;
+ return (4);
+ }
+
+protected:
+ virtual ~numpunct()
+ {
+ _Tidy();
+ }
+
+protected:
+ numpunct(const char *_Locname, size_t _Refs = 0)
+ : locale::facet(_Refs)
+ {
+ { _Locinfo _Lobj(_Locname);
+ _Init(_Lobj);
+ }
+ }
+
+ void _Init(const _Locinfo& _Lobj)
+ {
+ const lconv *_Ptr = _Lobj._Getlconv();
+
+ _Grouping = 0;
+ _Falsename = 0;
+ _Truename = 0;
+
+ try {
+ _Grouping = _Maklocstr(_Ptr->grouping, (char *)0, _Lobj._Getcvt());
+ _Falsename = _Maklocstr(_Lobj._Getfalse(), (_Elem *)0, _Lobj._Getcvt());
+ _Truename = _Maklocstr(_Lobj._Gettrue(), (_Elem *)0, _Lobj._Getcvt());
+ } catch (...) {
+ _Tidy();
+ throw;
+ }
+
+ _Dp = _Maklocchr(_Ptr->decimal_point[0], (_Elem *)0, _Lobj._Getcvt());
+ _Kseparator =
+ _Maklocchr(_Ptr->thousands_sep[0], (_Elem *)0, _Lobj._Getcvt());
+ }
+
+ virtual _Elem do_decimal_point() const
+ {
+ return (_Dp);
+ }
+
+ virtual _Elem do_thousands_sep() const
+ {
+ return (_Kseparator);
+ }
+
+ virtual string do_grouping() const
+ {
+ return (string(_Grouping));
+ }
+
+ virtual string_type do_falsename() const
+ {
+ return (string_type(_Falsename));
+ }
+
+ virtual string_type do_truename() const
+ {
+ return (string_type(_Truename));
+ }
+
+private:
+ void _Tidy()
+ {
+ delete[] ((void *)_Grouping);
+ delete[] ((void *)_Falsename);
+ delete[] ((void *)_Truename);
+ }
+
+ const char *_Grouping;
+ _Elem _Dp;
+ _Elem _Kseparator;
+ const _Elem *_Falsename;
+ const _Elem *_Truename;
+ };
+
+typedef numpunct<char> _Npc;
+typedef numpunct<wchar_t> _Npwc;
+
+
+template<class _Elem>
+ class numpunct_byname
+ : public numpunct<_Elem>
+ {
+public:
+ explicit numpunct_byname(const char *_Locname, size_t _Refs = 0)
+ : numpunct<_Elem>(_Locname, _Refs)
+ {
+ }
+
+protected:
+ virtual ~numpunct_byname()
+ {
+ }
+ };
+
+
+template<class _Elem>
+ locale::id numpunct<_Elem>::id;
+
+
+template<class _Elem,
+ class _InIt = istreambuf_iterator<_Elem, char_traits<_Elem> > >
+ class num_get
+ : public locale::facet
+ {
+public:
+ typedef numpunct<_Elem> _Mypunct;
+ typedef basic_string<_Elem, char_traits<_Elem>, allocator<_Elem> >
+ _Mystr;
+
+ static size_t __cdecl _Getcat(const locale::facet **_Ppf = 0)
+ {
+ if (_Ppf != 0 && *_Ppf == 0)
+ *_Ppf = new num_get<_Elem, _InIt>;
+ return (4);
+ }
+
+ static locale::id id;
+
+protected:
+ virtual ~num_get()
+ {
+ }
+
+protected:
+ void _Init(const _Locinfo& _Lobj)
+ {
+ _Cvt = _Lobj._Getcvt();
+ }
+
+ _Locinfo::_Cvtvec _Cvt;
+
+public:
+ explicit num_get(size_t _Refs = 0)
+ : locale::facet(_Refs)
+ {
+ { _Locinfo _Lobj;
+ _Init(_Lobj);
+ }
+ }
+
+ num_get(const _Locinfo& _Lobj, size_t _Refs = 0)
+ : locale::facet(_Refs)
+ {
+ _Init(_Lobj);
+ }
+
+ typedef _Elem char_type;
+ typedef _InIt iter_type;
+
+ _InIt get(_InIt _First, _InIt _Last,
+ ios_base& _Iosbase, ios_base::iostate& _State,
+ _Bool& _Val) const
+ {
+ return (do_get(_First, _Last, _Iosbase, _State, _Val));
+ }
+
+ _InIt get(_InIt _First, _InIt _Last,
+ ios_base& _Iosbase, ios_base::iostate& _State,
+ unsigned short& _Val) const
+ {
+ return (do_get(_First, _Last, _Iosbase, _State, _Val));
+ }
+
+ _InIt get(_InIt _First, _InIt _Last,
+ ios_base& _Iosbase, ios_base::iostate& _State,
+ unsigned int& _Val) const
+ {
+ return (do_get(_First, _Last, _Iosbase, _State, _Val));
+ }
+
+ _InIt get(_InIt _First, _InIt _Last,
+ ios_base& _Iosbase, ios_base::iostate& _State,
+ long& _Val) const
+ {
+ return (do_get(_First, _Last, _Iosbase, _State, _Val));
+ }
+
+ _InIt get(_InIt _First, _InIt _Last,
+ ios_base& _Iosbase, ios_base::iostate& _State,
+ unsigned long& _Val) const
+ {
+ return (do_get(_First, _Last, _Iosbase, _State, _Val));
+ }
+
+
+ _InIt get(_InIt _First, _InIt _Last,
+ ios_base& _Iosbase, ios_base::iostate& _State,
+ __int64& _Val) const
+ {
+ return (do_get(_First, _Last, _Iosbase, _State, _Val));
+ }
+
+ _InIt get(_InIt _First, _InIt _Last,
+ ios_base& _Iosbase, ios_base::iostate& _State,
+ unsigned __int64& _Val) const
+ {
+ return (do_get(_First, _Last, _Iosbase, _State, _Val));
+ }
+
+
+ _InIt get(_InIt _First, _InIt _Last,
+ ios_base& _Iosbase, ios_base::iostate& _State,
+ float& _Val) const
+ {
+ return (do_get(_First, _Last, _Iosbase, _State, _Val));
+ }
+
+ _InIt get(_InIt _First, _InIt _Last,
+ ios_base& _Iosbase, ios_base::iostate& _State,
+ double& _Val) const
+ {
+ return (do_get(_First, _Last, _Iosbase, _State, _Val));
+ }
+
+ _InIt get(_InIt _First, _InIt _Last,
+ ios_base& _Iosbase, ios_base::iostate& _State,
+ long double& _Val) const
+ {
+ return (do_get(_First, _Last, _Iosbase, _State, _Val));
+ }
+
+ _InIt get(_InIt _First, _InIt _Last,
+ ios_base& _Iosbase, ios_base::iostate& _State,
+ void *& _Val) const
+ {
+ return (do_get(_First, _Last, _Iosbase, _State, _Val));
+ }
+
+protected:
+ virtual _InIt do_get(_InIt _First, _InIt _Last,
+ ios_base& _Iosbase, ios_base::iostate& _State,
+ _Bool& _Val) const
+ {
+ ;
+ int _Ans = -1;
+
+ if (_Iosbase.flags() & ios_base::boolalpha)
+ {
+ typedef typename _Mystr::size_type _Mystrsize;
+ const _Mypunct& _Punct_fac = use_facet<_Mypunct >(_Iosbase.getloc());
+ _Mystr _Str((_Mystrsize)1, (char_type)0);
+ _Str += _Punct_fac.falsename();
+ _Str += (char_type)0;
+ _Str += _Punct_fac.truename();
+ _Ans = _Getloctxt(_First, _Last, (size_t)2, _Str.c_str());
+ }
+ else
+ {
+ char _Ac[32], *_Ep;
+ int _Errno = 0;
+ const unsigned long _Ulo = ::_Stoulx(_Ac, &_Ep,
+ _Getifld(_Ac, _First, _Last, _Iosbase.flags(),
+ _Iosbase.getloc()), &_Errno);
+ if (_Ep != _Ac && _Errno == 0 && _Ulo <= 1)
+ _Ans = _Ulo;
+ }
+
+ if (_First == _Last)
+ _State |= ios_base::eofbit;
+ if (_Ans < 0)
+ _State |= ios_base::failbit;
+ else
+ _Val = _Ans != 0;
+ return (_First);
+ }
+
+ virtual _InIt do_get(_InIt _First, _InIt _Last,
+ ios_base& _Iosbase, ios_base::iostate& _State,
+ unsigned short& _Val) const
+ {
+ ;
+ char _Ac[32], *_Ep;
+ int _Errno = 0;
+ int _Base = _Getifld(_Ac, _First, _Last, _Iosbase.flags(),
+ _Iosbase.getloc());
+ char *_Ptr = _Ac[0] == '-' ? _Ac + 1 : _Ac;
+ const unsigned long _Ans =
+ ::_Stoulx(_Ptr, &_Ep, _Base, &_Errno);
+
+ if (_First == _Last)
+ _State |= ios_base::eofbit;
+ if (_Ep == _Ptr || _Errno != 0 || 0xffff < _Ans)
+ _State |= ios_base::failbit;
+ else
+ _Val = (unsigned short)(_Ac[0] == '-'
+ ? 0 -_Ans : _Ans);
+ return (_First);
+ }
+
+ virtual _InIt do_get(_InIt _First, _InIt _Last,
+ ios_base& _Iosbase, ios_base::iostate& _State,
+ unsigned int& _Val) const
+ {
+ ;
+ char _Ac[32], *_Ep;
+ int _Errno = 0;
+ int _Base = _Getifld(_Ac, _First, _Last, _Iosbase.flags(),
+ _Iosbase.getloc());
+ char *_Ptr = _Ac[0] == '-' ? _Ac + 1 : _Ac;
+ const unsigned long _Ans =
+ ::_Stoulx(_Ptr, &_Ep, _Base, &_Errno);
+
+ if (_First == _Last)
+ _State |= ios_base::eofbit;
+ if (_Ep == _Ptr || _Errno != 0 || 0xffffffff < _Ans)
+ _State |= ios_base::failbit;
+ else
+ _Val = _Ac[0] == '-' ? 0 -_Ans : _Ans;
+ return (_First);
+ }
+
+ virtual _InIt do_get(_InIt _First, _InIt _Last,
+ ios_base& _Iosbase, ios_base::iostate& _State,
+ long& _Val) const
+ {
+ ;
+ char _Ac[32], *_Ep;
+ int _Errno = 0;
+ const long _Ans = ::_Stolx(_Ac, &_Ep,
+ _Getifld(_Ac, _First, _Last, _Iosbase.flags(),
+ _Iosbase.getloc()), &_Errno);
+
+ if (_First == _Last)
+ _State |= ios_base::eofbit;
+ if (_Ep == _Ac || _Errno != 0)
+ _State |= ios_base::failbit;
+ else
+ _Val = _Ans;
+ return (_First);
+ }
+
+ virtual _InIt do_get(_InIt _First, _InIt _Last,
+ ios_base& _Iosbase, ios_base::iostate& _State,
+ unsigned long& _Val) const
+ {
+ ;
+ char _Ac[32], *_Ep;
+ int _Errno = 0;
+ const unsigned long _Ans = ::_Stoulx(_Ac, &_Ep,
+ _Getifld(_Ac, _First, _Last, _Iosbase.flags(),
+ _Iosbase.getloc()), &_Errno);
+
+ if (_First == _Last)
+ _State |= ios_base::eofbit;
+ if (_Ep == _Ac || _Errno != 0)
+ _State |= ios_base::failbit;
+ else
+ _Val = _Ans;
+ return (_First);
+ }
+
+
+ virtual _InIt do_get(_InIt _First, _InIt _Last,
+ ios_base& _Iosbase, ios_base::iostate& _State,
+ __int64& _Val) const
+ {
+ ;
+ char _Ac[32], *_Ep;
+ int _Errno = 0;
+ const __int64 _Ans = ::_strtoi64(_Ac, &_Ep, _Getifld(_Ac, _First, _Last, _Iosbase.flags(), _Iosbase.getloc()));
+
+ if (_First == _Last)
+ _State |= ios_base::eofbit;
+ if (_Ep == _Ac || _Errno != 0)
+ _State |= ios_base::failbit;
+ else
+ _Val = _Ans;
+ return (_First);
+ }
+
+ virtual _InIt do_get(_InIt _First, _InIt _Last,
+ ios_base& _Iosbase, ios_base::iostate& _State,
+ unsigned __int64& _Val) const
+ {
+ ;
+ char _Ac[32], *_Ep;
+ int _Errno = 0;
+ const unsigned __int64 _Ans = ::_strtoui64(_Ac, &_Ep, _Getifld(_Ac, _First, _Last, _Iosbase.flags(), _Iosbase.getloc()));
+
+ if (_First == _Last)
+ _State |= ios_base::eofbit;
+ if (_Ep == _Ac || _Errno != 0)
+ _State |= ios_base::failbit;
+ else
+ _Val = _Ans;
+ return (_First);
+ }
+
+
+ virtual _InIt do_get(_InIt _First, _InIt _Last,
+ ios_base& _Iosbase, ios_base::iostate& _State,
+ float& _Val) const
+ {
+ ;
+ char _Ac[8 + 36 + 16], *_Ep;
+ int _Errno = 0;
+ const float _Ans = ::_Stofx(_Ac, &_Ep,
+ _Getffld(_Ac, _First, _Last,
+ _Iosbase.getloc()), &_Errno);
+
+ if (_First == _Last)
+ _State |= ios_base::eofbit;
+ if (_Ep == _Ac || _Errno != 0)
+ _State |= ios_base::failbit;
+ else
+ _Val = _Ans;
+ return (_First);
+ }
+
+ virtual _InIt do_get(_InIt _First, _InIt _Last,
+ ios_base& _Iosbase, ios_base::iostate& _State,
+ double& _Val) const
+ {
+ ;
+ char _Ac[8 + 36 + 16], *_Ep;
+ int _Errno = 0;
+ const double _Ans = ::_Stodx(_Ac, &_Ep,
+ _Getffld(_Ac, _First, _Last,
+ _Iosbase.getloc()), &_Errno);
+
+ if (_First == _Last)
+ _State |= ios_base::eofbit;
+ if (_Ep == _Ac || _Errno != 0)
+ _State |= ios_base::failbit;
+ else
+ _Val = _Ans;
+ return (_First);
+ }
+
+ virtual _InIt do_get(_InIt _First, _InIt _Last,
+ ios_base& _Iosbase, ios_base::iostate& _State,
+ long double& _Val) const
+ {
+ ;
+ char _Ac[8 + 36 + 16], *_Ep;
+ int _Errno = 0;
+ const long double _Ans = ::_Stoldx(_Ac, &_Ep,
+ _Getffld(_Ac, _First, _Last,
+ _Iosbase.getloc()), &_Errno);
+
+ if (_First == _Last)
+ _State |= ios_base::eofbit;
+ if (_Ep == _Ac || _Errno != 0)
+ _State |= ios_base::failbit;
+ else
+ _Val = _Ans;
+ return (_First);
+ }
+
+ virtual _InIt do_get(_InIt _First, _InIt _Last,
+ ios_base& _Iosbase, ios_base::iostate& _State,
+ void *& _Val) const
+ {
+ ;
+ char _Ac[32], *_Ep;
+ int _Errno = 0;
+
+
+ int _Base = _Getifld(_Ac, _First, _Last, ios_base::hex,
+ _Iosbase.getloc());
+ const unsigned __int64 _Ans =
+ (sizeof (void *) == sizeof (unsigned long))
+ ? (unsigned __int64)::_Stoulx(_Ac, &_Ep, _Base, &_Errno)
+ : ::_strtoui64(_Ac, &_Ep, _Base);
+
+
+
+
+
+
+
+ if (_First == _Last)
+ _State |= ios_base::eofbit;
+ if (_Ep == _Ac || _Errno != 0)
+ _State |= ios_base::failbit;
+ else
+ _Val = (void *)(uintptr_t)_Ans;
+ return (_First);
+ }
+
+private:
+ int __cdecl _Getifld( char *_Ac,
+ _InIt& _First, _InIt& _Last, ios_base::fmtflags _Basefield,
+ const locale& _Loc) const
+ {
+ const _Mypunct& _Punct_fac = use_facet<_Mypunct >(_Loc);
+ const string _Grouping = _Punct_fac.grouping();
+ const _Elem _Kseparator = _Punct_fac.thousands_sep();
+ const _Elem _E0 = _Maklocchr('0', (_Elem *)0, _Cvt);
+ char *_Ptr = _Ac;
+
+ if (_First == _Last)
+ ;
+ else if (*_First == _Maklocchr('+', (_Elem *)0, _Cvt))
+ *_Ptr++ = '+', ++_First;
+ else if (*_First == _Maklocchr('-', (_Elem *)0, _Cvt))
+ *_Ptr++ = '-', ++_First;
+
+ _Basefield &= ios_base::basefield;
+ int _Base = _Basefield == ios_base::oct ? 8
+ : _Basefield == ios_base::hex ? 16
+ : _Basefield == ios_base::_Fmtzero ? 0 : 10;
+
+ bool _Seendigit = false;
+ bool _Nonzero = false;
+
+ if (_First != _Last && *_First == _E0)
+ {
+ _Seendigit = true, ++_First;
+ if (_First != _Last && (*_First == _Maklocchr('x', (_Elem *)0, _Cvt)
+ || *_First == _Maklocchr('X', (_Elem *)0, _Cvt))
+ && (_Base == 0 || _Base == 16))
+ _Base = 16, _Seendigit = false, ++_First;
+ else if (_Base == 0)
+ _Base = 8;
+ }
+
+ int _Dlen = _Base == 0 || _Base == 10 ? 10
+ : _Base == 8 ? 8 : 16 + 6;
+ string _Groups((size_t)1, (char)_Seendigit);
+ size_t _Group = 0;
+
+ for (char *const _Pe = &_Ac[32 - 1];
+ _First != _Last; ++_First)
+ if (::memchr("0123456789abcdefABCDEF",
+ *_Ptr = _Maklocbyte((_Elem)*_First, _Cvt), _Dlen) != 0)
+ {
+ if ((_Nonzero || *_Ptr != '0') && _Ptr < _Pe)
+ ++_Ptr, _Nonzero = true;
+ _Seendigit = true;
+ if (_Groups[_Group] != 127)
+ ++_Groups[_Group];
+ }
+ else if (_Groups[_Group] == '\0'
+ || _Kseparator == (_Elem)0
+ || *_First != _Kseparator)
+ break;
+ else
+ {
+ _Groups.append((string::size_type)1, '\0');
+ ++_Group;
+ }
+
+ if (_Group == 0)
+ ;
+ else if ('\0' < _Groups[_Group])
+ ++_Group;
+ else
+ _Seendigit = false;
+
+ for (const char *_Pg = _Grouping.c_str(); _Seendigit && 0 < _Group; )
+ if (*_Pg == 127)
+ break;
+ else if (0 < --_Group && *_Pg != _Groups[_Group]
+ || 0 == _Group && *_Pg < _Groups[_Group])
+ _Seendigit = false;
+ else if ('\0' < _Pg[1])
+ ++_Pg;
+
+ if (_Seendigit && !_Nonzero)
+ *_Ptr++ = '0';
+ else if (!_Seendigit)
+ _Ptr = _Ac;
+ *_Ptr = '\0';
+ return (_Base);
+ }
+
+ int __cdecl _Getffld( char *_Ac,
+ _InIt& _First, _InIt &_Last, const locale& _Loc) const
+ {
+ const _Mypunct& _Punct_fac = use_facet<_Mypunct >(_Loc);
+ const string _Grouping = _Punct_fac.grouping();
+ const _Elem _E0 = _Maklocchr('0', (_Elem *)0, _Cvt);
+ char *_Ptr = _Ac;
+ bool _Bad = false;
+
+ if (_First == _Last)
+ ;
+ else if (*_First == _Maklocchr('+', (_Elem *)0, _Cvt))
+ *_Ptr++ = '+', ++_First;
+ else if (*_First == _Maklocchr('-', (_Elem *)0, _Cvt))
+ *_Ptr++ = '-', ++_First;
+
+ bool _Seendigit = false;
+ int _Significant = 0;
+ int _Pten = 0;
+
+ if (*_Grouping.c_str() == 127 || *_Grouping.c_str() <= '\0')
+ for (; _First != _Last
+ && _E0 <= *_First && *_First <= _E0 + 9;
+ _Seendigit = true, ++_First)
+ if (36 <= _Significant)
+ ++_Pten;
+ else if (*_First == _E0 && _Significant == 0)
+ ;
+ else
+ {
+ *_Ptr++ = (char)((*_First - _E0) + '0');
+ ++_Significant;
+ }
+ else
+ {
+ const _Elem _Kseparator = _Punct_fac.thousands_sep();
+ string _Groups((size_t)1, '\0');
+ size_t _Group = 0;
+
+ for (; _First != _Last; ++_First)
+ if (_E0 <= *_First && *_First <= _E0 + 9)
+ {
+ _Seendigit = true;
+ if (36 <= _Significant)
+ ++_Pten;
+ else if (*_First == _E0 && _Significant == 0)
+ ;
+ else
+ {
+ *_Ptr++ = (char)((*_First - _E0) + '0');
+ ++_Significant;
+ }
+ if (_Groups[_Group] != 127)
+ ++_Groups[_Group];
+ }
+ else if (_Groups[_Group] == '\0'
+ || _Kseparator == (_Elem)0
+ || *_First != _Kseparator)
+ break;
+ else
+ {
+ _Groups.append((size_t)1, '\0');
+ ++_Group;
+ }
+ if (_Group == 0)
+ ;
+ else if ('\0' < _Groups[_Group])
+ ++_Group;
+ else
+ _Bad = true;
+
+ for (const char *_Pg = _Grouping.c_str();
+ !_Bad && 0 < _Group; )
+ if (*_Pg == 127)
+ break;
+ else if (0 < --_Group && *_Pg != _Groups[_Group]
+ || 0 == _Group && *_Pg < _Groups[_Group])
+ _Bad = true;
+ else if ('\0' < _Pg[1])
+ ++_Pg;
+ }
+
+ if (_Seendigit && _Significant == 0)
+ *_Ptr++ = '0';
+
+ if (_First != _Last && *_First == _Punct_fac.decimal_point())
+ *_Ptr++ = localeconv()->decimal_point[0], ++_First;
+
+ if (_Significant == 0)
+ {
+ for (; _First != _Last && *_First == _E0;
+ _Seendigit = true, ++_First)
+ --_Pten;
+ if (_Pten < 0)
+ *_Ptr++ = '0', ++_Pten;
+ }
+
+ for (; _First != _Last
+ && _E0 <= *_First && *_First <= _E0 + 9;
+ _Seendigit = true, ++_First)
+ if (_Significant < 36)
+ {
+ *_Ptr++ = (char)((*_First - _E0) + '0');
+ ++_Significant;
+ }
+
+ if (_Seendigit && _First != _Last
+ && (*_First == _Maklocchr('e', (_Elem *)0, _Cvt)
+ || *_First == _Maklocchr('E', (_Elem *)0, _Cvt)))
+ {
+ *_Ptr++ = 'e', ++_First;
+ _Seendigit = false, _Significant = 0;
+
+ if (_First == _Last)
+ ;
+ else if (*_First == _Maklocchr('+', (_Elem *)0, _Cvt))
+ *_Ptr++ = '+', ++_First;
+ else if (*_First == _Maklocchr('-', (_Elem *)0, _Cvt))
+ *_Ptr++ = '-', ++_First;
+ for (; _First != _Last && *_First == _E0; )
+ _Seendigit = true, ++_First;
+ if (_Seendigit)
+ *_Ptr++ = '0';
+ for (; _First != _Last
+ && _E0 <= *_First && *_First <= _E0 + 9;
+ _Seendigit = true, ++_First)
+ if (_Significant < 8)
+ {
+ *_Ptr++ = (char)((*_First - _E0) + '0');
+ ++_Significant;
+ }
+ }
+
+ if (_Bad || !_Seendigit)
+ _Ptr = _Ac;
+ *_Ptr = '\0';
+ return (_Pten);
+ }
+ };
+
+
+template<class _Elem,
+ class _InIt>
+ locale::id num_get<_Elem, _InIt>::id;
+
+
+template<class _Elem,
+ class _OutIt = ostreambuf_iterator<_Elem, char_traits<_Elem> > >
+ class num_put
+ : public locale::facet
+ {
+public:
+ typedef numpunct<_Elem> _Mypunct;
+ typedef basic_string<_Elem, char_traits<_Elem>, allocator<_Elem> >
+ _Mystr;
+
+ static size_t __cdecl _Getcat(const locale::facet **_Ppf = 0)
+ {
+ if (_Ppf != 0 && *_Ppf == 0)
+ *_Ppf = new num_put<_Elem, _OutIt>;
+ return (4);
+ }
+
+ static locale::id id;
+
+protected:
+ virtual ~num_put()
+ {
+ }
+
+protected:
+ void _Init(const _Locinfo& _Lobj)
+ {
+ _Cvt = _Lobj._Getcvt();
+ }
+
+ _Locinfo::_Cvtvec _Cvt;
+
+public:
+ explicit num_put(size_t _Refs = 0)
+ : locale::facet(_Refs)
+ {
+ { _Locinfo _Lobj;
+ _Init(_Lobj);
+ }
+ }
+
+ num_put(const _Locinfo& _Lobj, size_t _Refs = 0)
+ : locale::facet(_Refs)
+ {
+ _Init(_Lobj);
+ }
+
+ typedef _Elem char_type;
+ typedef _OutIt iter_type;
+
+ _OutIt put(_OutIt _Dest,
+ ios_base& _Iosbase, _Elem _Fill, _Bool _Val) const
+ {
+ return (do_put(_Dest, _Iosbase, _Fill, _Val));
+ }
+
+ _OutIt put(_OutIt _Dest,
+ ios_base& _Iosbase, _Elem _Fill, long _Val) const
+ {
+ return (do_put(_Dest, _Iosbase, _Fill, _Val));
+ }
+
+ _OutIt put(_OutIt _Dest,
+ ios_base& _Iosbase, _Elem _Fill, unsigned long _Val) const
+ {
+ return (do_put(_Dest, _Iosbase, _Fill, _Val));
+ }
+
+
+ _OutIt put(_OutIt _Dest,
+ ios_base& _Iosbase, _Elem _Fill, __int64 _Val) const
+ {
+ return (do_put(_Dest, _Iosbase, _Fill, _Val));
+ }
+
+ _OutIt put(_OutIt _Dest,
+ ios_base& _Iosbase, _Elem _Fill, unsigned __int64 _Val) const
+ {
+ return (do_put(_Dest, _Iosbase, _Fill, _Val));
+ }
+
+
+ _OutIt put(_OutIt _Dest,
+ ios_base& _Iosbase, _Elem _Fill, double _Val) const
+ {
+ return (do_put(_Dest, _Iosbase, _Fill, _Val));
+ }
+
+ _OutIt put(_OutIt _Dest,
+ ios_base& _Iosbase, _Elem _Fill, long double _Val) const
+ {
+ return (do_put(_Dest, _Iosbase, _Fill, _Val));
+ }
+
+ _OutIt put(_OutIt _Dest,
+ ios_base& _Iosbase, _Elem _Fill, const void *_Val) const
+ {
+ return (do_put(_Dest, _Iosbase, _Fill, _Val));
+ }
+
+protected:
+ virtual _OutIt do_put(_OutIt _Dest,
+ ios_base& _Iosbase, _Elem _Fill, _Bool _Val) const
+ {
+ ;
+ if (!(_Iosbase.flags() & ios_base::boolalpha))
+ return (do_put(_Dest, _Iosbase, _Fill, (long)_Val));
+ else
+ {
+ const _Mypunct& _Punct_fac = use_facet<_Mypunct >(_Iosbase.getloc());
+ _Mystr _Str;
+ if (_Val)
+ _Str.assign(_Punct_fac.truename());
+ else
+ _Str.assign(_Punct_fac.falsename());
+
+ size_t _Fillcount = _Iosbase.width() <= 0
+ || (size_t)_Iosbase.width() <= _Str.size()
+ ? 0 : (size_t)_Iosbase.width() - _Str.size();
+
+ if ((_Iosbase.flags() & ios_base::adjustfield) != ios_base::left)
+ {
+ _Dest = _Rep(_Dest, _Fill, _Fillcount);
+ _Fillcount = 0;
+ }
+ _Dest = _Put(_Dest, _Str.c_str(), _Str.size());
+ _Iosbase.width(0);
+ return (_Rep(_Dest, _Fill, _Fillcount));
+ }
+ }
+
+ virtual _OutIt do_put(_OutIt _Dest,
+ ios_base& _Iosbase, _Elem _Fill, long _Val) const
+ {
+ const size_t _Buf_size = 2 * 32;
+ char _Buf[_Buf_size], _Fmt[6];
+ return (_Iput(_Dest, _Iosbase, _Fill, _Buf,
+ ::sprintf_s(_Buf, _Buf_size, _Ifmt(_Fmt, "ld",
+ _Iosbase.flags()), _Val)));
+ }
+
+ virtual _OutIt do_put(_OutIt _Dest,
+ ios_base& _Iosbase, _Elem _Fill, unsigned long _Val) const
+ {
+ const size_t _Buf_size = 2 * 32;
+ char _Buf[_Buf_size], _Fmt[6];
+ return (_Iput(_Dest, _Iosbase, _Fill, _Buf,
+ ::sprintf_s(_Buf, _Buf_size, _Ifmt(_Fmt, "lu",
+ _Iosbase.flags()), _Val)));
+ }
+
+
+ virtual _OutIt do_put(_OutIt _Dest,
+ ios_base& _Iosbase, _Elem _Fill, __int64 _Val) const
+ {
+ const size_t _Buf_size = 2 * 32;
+ char _Buf[_Buf_size], _Fmt[8];
+ return (_Iput(_Dest, _Iosbase, _Fill, _Buf,
+ ::sprintf_s(_Buf, _Buf_size, _Ifmt(_Fmt, "Ld",
+ _Iosbase.flags()), _Val)));
+ }
+
+ virtual _OutIt do_put(_OutIt _Dest,
+ ios_base& _Iosbase, _Elem _Fill, unsigned __int64 _Val) const
+ {
+ const size_t _Buf_size = 2 * 32;
+ char _Buf[_Buf_size], _Fmt[8];
+ return (_Iput(_Dest, _Iosbase, _Fill, _Buf,
+ ::sprintf_s(_Buf, _Buf_size, _Ifmt(_Fmt, "Lu",
+ _Iosbase.flags()), _Val)));
+ }
+
+
+ virtual _OutIt do_put(_OutIt _Dest,
+ ios_base& _Iosbase, _Elem _Fill, double _Val) const
+ {
+ const size_t _Buf_size = 8 + 36 + 64;
+ char _Buf[_Buf_size], _Fmt[8];
+ streamsize _Precision = _Iosbase.precision() <= 0
+ && !(_Iosbase.flags() & ios_base::fixed)
+ ? 6 : _Iosbase.precision();
+ int _Significance = 36 < _Precision
+ ? 36 : (int)_Precision;
+ _Precision -= _Significance;
+ size_t _Beforepoint = 0;
+ size_t _Afterpoint = 0;
+
+ if ((_Iosbase.flags() & ios_base::floatfield) == ios_base::fixed)
+ {
+ bool _Signed = _Val < 0;
+ if (_Signed)
+ _Val = -_Val;
+
+ for (; 1e35 <= _Val && _Beforepoint < 5000; _Beforepoint += 10)
+ _Val /= 1e10;
+
+ if (0 < _Val)
+ for (; 10 <= _Precision && _Val <= 1e-35
+ && _Afterpoint < 5000; _Afterpoint += 10)
+ {
+ _Val *= 1e10;
+ _Precision -= 10;
+ }
+
+ if (_Signed)
+ _Val = -_Val;
+ }
+
+ return (_Fput(_Dest, _Iosbase, _Fill, _Buf,
+ _Beforepoint, _Afterpoint, _Precision,
+ ::sprintf_s(_Buf, _Buf_size, _Ffmt(_Fmt, 0, _Iosbase.flags()),
+ _Significance, _Val)));
+ }
+
+ virtual _OutIt do_put(_OutIt _Dest,
+ ios_base& _Iosbase, _Elem _Fill, long double _Val) const
+ {
+ const size_t _Buf_size = 8 + 36 + 64;
+ char _Buf[_Buf_size], _Fmt[8];
+ streamsize _Precision = _Iosbase.precision() <= 0
+ && !(_Iosbase.flags() & ios_base::fixed)
+ ? 6 : _Iosbase.precision();
+ int _Significance = 36 < _Precision
+ ? 36 : (int)_Precision;
+ _Precision -= _Significance;
+ size_t _Beforepoint = 0;
+ size_t _Afterpoint = 0;
+
+ if ((_Iosbase.flags() & ios_base::floatfield) == ios_base::fixed)
+ {
+ bool _Signed = _Val < 0;
+ if (_Signed)
+ _Val = -_Val;
+
+ for (; 1e35 <= _Val && _Beforepoint < 5000; _Beforepoint += 10)
+ _Val /= 1e10;
+
+ if (0 < _Val)
+ for (; 10 <= _Precision && _Val <= 1e-35
+ && _Afterpoint < 5000; _Afterpoint += 10)
+ {
+ _Val *= 1e10;
+ _Precision -= 10;
+ }
+
+ if (_Signed)
+ _Val = -_Val;
+ }
+
+ return (_Fput(_Dest, _Iosbase, _Fill, _Buf,
+ _Beforepoint, _Afterpoint, _Precision,
+ ::sprintf_s(_Buf, _Buf_size, _Ffmt(_Fmt, 'L', _Iosbase.flags()),
+ _Significance, _Val)));
+ }
+
+ virtual _OutIt do_put(_OutIt _Dest,
+ ios_base& _Iosbase, _Elem _Fill, const void *_Val) const
+ {
+ const size_t _Buf_size = 2 * 32;
+ char _Buf[_Buf_size];
+ return (_Iput(_Dest, _Iosbase, _Fill, _Buf,
+ ::sprintf_s(_Buf, _Buf_size, "%p", _Val)));
+ }
+
+private:
+ char *__cdecl _Ffmt( char *_Fmt,
+ char _Spec, ios_base::fmtflags _Flags) const
+ {
+ char *_Ptr = _Fmt;
+ *_Ptr++ = '%';
+
+ if (_Flags & ios_base::showpos)
+ *_Ptr++ = '+';
+ if (_Flags & ios_base::showpoint)
+ *_Ptr++ = '#';
+ *_Ptr++ = '.';
+ *_Ptr++ = '*';
+ if (_Spec != '\0')
+ *_Ptr++ = _Spec;
+
+ ios_base::fmtflags _Ffl = _Flags & ios_base::floatfield;
+ *_Ptr++ = _Ffl == ios_base::fixed ? 'f'
+ : _Ffl == ios_base::scientific ? 'e' : 'g';
+ *_Ptr = '\0';
+ return (_Fmt);
+ }
+
+ _OutIt __cdecl _Fput(_OutIt _Dest,
+ ios_base& _Iosbase, _Elem _Fill, const char *_Buf,
+ size_t _Beforepoint, size_t _Afterpoint,
+ size_t _Trailing, size_t _Count) const
+ {
+ ;
+ const _Mypunct& _Punct_fac = use_facet<_Mypunct >(_Iosbase.getloc());
+ const string _Grouping = _Punct_fac.grouping();
+ const _Elem _Kseparator = _Punct_fac.thousands_sep();
+ string _Groupstring;
+ const _Elem _E0 = _Maklocchr('0', (_Elem *)0, _Cvt);
+ size_t _Prefix = _Buf[0] == '+' || _Buf[0] == '-' ? 1 : 0;
+
+ char _Enders[3];
+ _Enders[0] = ::localeconv()->decimal_point[0];
+ _Enders[1] = 'e';
+ _Enders[2] = '\0';
+
+ const char *_Eptr = (const char *)::memchr(_Buf,
+ 'e', _Count);
+ const char *_Pointptr = (const char *)::memchr(_Buf,
+ _Enders[0], _Count);
+ if (_Pointptr == 0)
+ _Trailing = 0;
+
+ if (*_Grouping.c_str() != 127 && '\0' < *_Grouping.c_str())
+ {
+ _Groupstring.append(_Buf, _Count);
+ if (_Eptr == 0)
+ _Groupstring.append(_Trailing, '0');
+ else
+ {
+ if (_Pointptr == 0)
+ {
+ _Groupstring.append(_Beforepoint, '0');
+ _Beforepoint = 0;
+ }
+ _Groupstring.insert(_Eptr - _Buf, _Trailing, '0');
+ }
+ _Trailing = 0;
+
+ if (_Pointptr == 0)
+ _Groupstring.append(_Beforepoint, '0');
+ else
+ {
+ _Groupstring.insert(_Pointptr - _Buf + 1, _Afterpoint, '0');
+ _Groupstring.insert(_Pointptr - _Buf, _Beforepoint, '0');
+ _Afterpoint = 0;
+ }
+ _Beforepoint = 0;
+
+ const char *_Pg = _Grouping.c_str();
+ size_t _Off = ::strcspn(&_Groupstring[0], &_Enders[0]);
+ while (*_Pg != 127 && '\0' < *_Pg
+ && (size_t)*_Pg < _Off - _Prefix)
+ {
+ _Groupstring.insert(_Off -= *_Pg, (size_t)1, '\0');
+ if ('\0' < _Pg[1])
+ ++_Pg;
+ }
+
+ _Buf = &_Groupstring[0];
+ _Trailing = 0;
+ _Count = _Groupstring.size();
+ }
+
+ size_t _Fillcount = _Beforepoint + _Afterpoint + _Trailing + _Count;
+ _Fillcount = _Iosbase.width() <= 0
+ || (size_t)_Iosbase.width() <= _Fillcount
+ ? 0 : (size_t)_Iosbase.width() - _Fillcount;
+ ios_base::fmtflags _Adjustfield =
+ _Iosbase.flags() & ios_base::adjustfield;
+ if (_Adjustfield != ios_base::left
+ && _Adjustfield != ios_base::internal)
+ {
+ _Dest = _Rep(_Dest, _Fill, _Fillcount);
+ _Fillcount = 0;
+ }
+ else if (_Adjustfield == ios_base::internal)
+ {
+ if (0 < _Prefix)
+ {
+ _Dest = _Putc(_Dest, _Buf, 1);
+ ++_Buf, --_Count;
+ }
+ _Dest = _Rep(_Dest, _Fill, _Fillcount);
+ _Fillcount = 0;
+ }
+
+ _Pointptr = (const char *)::memchr(_Buf,
+ _Enders[0], _Count);
+ if (_Pointptr != 0)
+ {
+ size_t _Fracoffset = _Pointptr - _Buf + 1;
+ _Dest = _Putgrouped(_Dest, _Buf, _Fracoffset - 1, _Kseparator);
+ _Dest = _Rep(_Dest, _E0, _Beforepoint);
+ _Dest = _Rep(_Dest, _Punct_fac.decimal_point(), 1);
+ _Dest = _Rep(_Dest, _E0, _Afterpoint);
+ _Buf += _Fracoffset, _Count -= _Fracoffset;
+ }
+
+ _Eptr = (const char *)::memchr(_Buf,
+ 'e', _Count);
+ if (_Eptr != 0)
+ {
+ size_t _Expoffset = _Eptr - _Buf + 1;
+ _Dest = _Putgrouped(_Dest, _Buf, _Expoffset - 1, _Kseparator);
+ _Dest = _Rep(_Dest, _E0, _Trailing), _Trailing = 0;
+ _Dest = _Putc(_Dest, _Iosbase.flags() & ios_base::uppercase
+ ? "E" : "e", 1);
+ _Buf += _Expoffset, _Count -= _Expoffset;
+ }
+
+ _Dest = _Putgrouped(_Dest, _Buf, _Count,
+ _Kseparator);
+ _Dest = _Rep(_Dest, _E0, _Trailing);
+ _Iosbase.width(0);
+ return (_Rep(_Dest, _Fill, _Fillcount));
+ }
+
+ char *__cdecl _Ifmt( char *_Fmt,
+ const char *_Spec, ios_base::fmtflags _Flags) const
+ {
+ char *_Ptr = _Fmt;
+ *_Ptr++ = '%';
+
+ if (_Flags & ios_base::showpos)
+ *_Ptr++ = '+';
+ if (_Flags & ios_base::showbase)
+ *_Ptr++ = '#';
+ if (_Spec[0] != 'L')
+ *_Ptr++ = _Spec[0];
+ else
+ {
+ *_Ptr++ = 'I';
+ *_Ptr++ = '6';
+ *_Ptr++ = '4';
+ }
+
+ ios_base::fmtflags _Basefield = _Flags & ios_base::basefield;
+ *_Ptr++ = _Basefield == ios_base::oct ? 'o'
+ : _Basefield != ios_base::hex ? _Spec[1]
+ : _Flags & ios_base::uppercase ? 'X' : 'x';
+ *_Ptr = '\0';
+ return (_Fmt);
+ }
+
+ _OutIt __cdecl _Iput(_OutIt _Dest,
+ ios_base& _Iosbase, _Elem _Fill, char *_Buf, size_t _Count) const
+ {
+ ;
+ const _Mypunct& _Punct_fac = use_facet<_Mypunct >(_Iosbase.getloc());
+ const string _Grouping = _Punct_fac.grouping();
+ const size_t _Prefix = *_Buf == '+' || *_Buf == '-' ? 1
+ : *_Buf == '0' && (_Buf[1] == 'x' || _Buf[1] == 'X') ? 2
+ : 0;
+
+ if (*_Grouping.c_str() != 127 && '\0' < *_Grouping.c_str())
+ {
+ const char *_Pg = _Grouping.c_str();
+ size_t _Off = _Count;
+ while (*_Pg != 127 && '\0' < *_Pg
+ && (size_t)*_Pg < _Off - _Prefix)
+ {
+ _Off -= *_Pg;
+ ::memmove_s((&_Buf[_Off + 1]), (_Count + 1 - _Off), (&_Buf[_Off]), (_Count + 1 - _Off));
+ _Buf[_Off] = '\0', ++_Count;
+ if ('\0' < _Pg[1])
+ ++_Pg;
+ }
+ }
+
+ size_t _Fillcount = _Iosbase.width() <= 0
+ || (size_t)_Iosbase.width() <= _Count
+ ? 0 : (size_t)_Iosbase.width() - _Count;
+
+ ios_base::fmtflags _Adjustfield =
+ _Iosbase.flags() & ios_base::adjustfield;
+ if (_Adjustfield != ios_base::left
+ && _Adjustfield != ios_base::internal)
+ {
+ _Dest = _Rep(_Dest, _Fill, _Fillcount);
+ _Fillcount = 0;
+ }
+ else if (_Adjustfield == ios_base::internal)
+ {
+ _Dest = _Putc(_Dest, _Buf, _Prefix);
+ _Buf += _Prefix, _Count -= _Prefix;
+ _Dest = _Rep(_Dest, _Fill, _Fillcount), _Fillcount = 0;
+ }
+
+ _Dest = _Putgrouped(_Dest, _Buf, _Count,
+ _Punct_fac.thousands_sep());
+ _Iosbase.width(0);
+ return (_Rep(_Dest, _Fill, _Fillcount));
+ }
+
+ _OutIt __cdecl _Put(_OutIt _Dest,
+ const _Elem *_Ptr, size_t _Count) const
+ {
+ for (; 0 < _Count; --_Count, ++_Dest, ++_Ptr)
+ *_Dest = *_Ptr;
+ return (_Dest);
+ }
+
+ _OutIt __cdecl _Putc(_OutIt _Dest,
+ const char *_Ptr, size_t _Count) const
+ {
+ for (; 0 < _Count; --_Count, ++_Dest, ++_Ptr)
+ *_Dest = _Maklocchr(*_Ptr, (_Elem *)0, _Cvt);
+ return (_Dest);
+ }
+
+ _OutIt __cdecl _Putgrouped(_OutIt _Dest,
+ const char *_Ptr, size_t _Count, _Elem _Kseparator) const
+ {
+ for (; ; ++_Ptr, --_Count)
+ {
+ const char *_Pend =
+ (const char *)::memchr(_Ptr, '\0', _Count);
+ size_t _Groupsize = _Pend != 0 ? _Pend - _Ptr : _Count;
+
+ _Dest = _Putc(_Dest, _Ptr, _Groupsize);
+ _Ptr += _Groupsize, _Count -= _Groupsize;
+ if (_Count == 0)
+ break;
+ if (_Kseparator != (_Elem)0)
+ _Dest = _Rep(_Dest, _Kseparator, 1);
+ }
+ return (_Dest);
+ }
+
+ _OutIt __cdecl _Rep(_OutIt _Dest,
+ _Elem _Ch, size_t _Count) const
+ {
+ for (; 0 < _Count; --_Count, ++_Dest)
+ *_Dest = _Ch;
+ return (_Dest);
+ }
+ };
+
+
+template<class _Elem,
+ class _OutIt>
+ locale::id num_put<_Elem, _OutIt>::id;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
+
+
+#pragma warning(pop)
+#pragma pack(pop)
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma pack(push,8)
+#pragma warning(push,3)
+
+
+namespace std {
+
+
+template<class _Elem,
+ class _Traits>
+ class basic_ios
+ : public ios_base
+ {
+public:
+ typedef basic_ios<_Elem, _Traits> _Myt;
+ typedef basic_ostream<_Elem, _Traits> _Myos;
+ typedef basic_streambuf<_Elem, _Traits> _Mysb;
+ typedef ctype<_Elem> _Ctype;
+ typedef _Elem char_type;
+ typedef _Traits traits_type;
+ typedef typename _Traits::int_type int_type;
+ typedef typename _Traits::pos_type pos_type;
+ typedef typename _Traits::off_type off_type;
+
+ explicit basic_ios(_Mysb *_Strbuf)
+ {
+ init(_Strbuf);
+ }
+
+ virtual ~basic_ios()
+ {
+ }
+
+ void clear(iostate _State = goodbit, bool _Reraise = false)
+ {
+ ios_base::clear((iostate)(_Mystrbuf == 0
+ ? (int)_State | (int)badbit : (int)_State), _Reraise);
+ }
+
+ void clear(io_state _State)
+ {
+ clear((iostate)_State);
+ }
+
+ void setstate(iostate _State, bool _Reraise = false)
+ {
+ if (_State != goodbit)
+ clear((iostate)((int)rdstate() | (int)_State), _Reraise);
+ }
+
+ void setstate(io_state _State)
+ {
+ setstate((iostate)_State);
+ }
+
+ _Myt& copyfmt(const _Myt& _Right)
+ {
+ _Tiestr = _Right.tie();
+ _Fillch = _Right.fill();
+ ios_base::copyfmt(_Right);
+ return (*this);
+ }
+
+ _Myos * tie() const
+ {
+ return (_Tiestr);
+ }
+
+ _Myos * tie(_Myos *_Newtie)
+ {
+ _Myos *_Oldtie = _Tiestr;
+ _Tiestr = _Newtie;
+ return (_Oldtie);
+ }
+
+ _Mysb * rdbuf() const
+ {
+ return (_Mystrbuf);
+ }
+
+ _Mysb * rdbuf(_Mysb *_Strbuf)
+ {
+ _Mysb *_Oldstrbuf = _Mystrbuf;
+ _Mystrbuf = _Strbuf;
+ clear();
+ return (_Oldstrbuf);
+ }
+
+ locale imbue(const locale& _Loc)
+ {
+ locale _Oldlocale = ios_base::imbue(_Loc);
+ if (rdbuf() != 0)
+ rdbuf()->pubimbue(_Loc);
+ return (_Oldlocale);
+ }
+
+ _Elem fill() const
+ {
+ return (_Fillch);
+ }
+
+ _Elem fill(_Elem _Newfill)
+ {
+ _Elem _Oldfill = _Fillch;
+ _Fillch = _Newfill;
+ return (_Oldfill);
+ }
+
+ char narrow(_Elem _Ch, char _Dflt = '\0') const
+ {
+ const _Ctype& _Ctype_fac = use_facet<_Ctype >(getloc());
+ return (_Ctype_fac.narrow(_Ch, _Dflt));
+ }
+
+ _Elem widen(char _Byte) const
+ {
+ const _Ctype& _Ctype_fac = use_facet<_Ctype >(getloc());
+ return (_Ctype_fac.widen(_Byte));
+ }
+
+protected:
+ void init(_Mysb *_Strbuf = 0,
+ bool _Isstd = false)
+ {
+ _Init();
+ _Mystrbuf = _Strbuf;
+ _Tiestr = 0;
+ _Fillch = widen(' ');
+
+ if (_Mystrbuf == 0)
+ setstate(badbit);
+
+ if (_Isstd)
+ _Addstd(this);
+ else
+ _Stdstr = 0;
+ }
+
+ basic_ios()
+ {
+ }
+
+private:
+ basic_ios(const _Myt&);
+ _Myt& operator=(const _Myt&);
+
+ _Mysb *_Mystrbuf;
+ _Myos *_Tiestr;
+ _Elem _Fillch;
+ };
+
+
+
+
+
+
+
+
+
+
+
+
+
+inline ios_base& __cdecl boolalpha(ios_base& _Iosbase)
+ {
+ _Iosbase.setf(ios_base::boolalpha);
+ return (_Iosbase);
+ }
+
+inline ios_base& __cdecl dec(ios_base& _Iosbase)
+ {
+ _Iosbase.setf(ios_base::dec, ios_base::basefield);
+ return (_Iosbase);
+ }
+
+inline ios_base& __cdecl fixed(ios_base& _Iosbase)
+ {
+ _Iosbase.setf(ios_base::fixed, ios_base::floatfield);
+ return (_Iosbase);
+ }
+
+inline ios_base& __cdecl hex(ios_base& _Iosbase)
+ {
+ _Iosbase.setf(ios_base::hex, ios_base::basefield);
+ return (_Iosbase);
+ }
+
+inline ios_base& __cdecl internal(ios_base& _Iosbase)
+ {
+ _Iosbase.setf(ios_base::internal, ios_base::adjustfield);
+ return (_Iosbase);
+ }
+
+inline ios_base& __cdecl left(ios_base& _Iosbase)
+ {
+ _Iosbase.setf(ios_base::left, ios_base::adjustfield);
+ return (_Iosbase);
+ }
+
+inline ios_base& __cdecl noboolalpha(ios_base& _Iosbase)
+ {
+ _Iosbase.unsetf(ios_base::boolalpha);
+ return (_Iosbase);
+ }
+
+inline ios_base& __cdecl noshowbase(ios_base& _Iosbase)
+ {
+ _Iosbase.unsetf(ios_base::showbase);
+ return (_Iosbase);
+ }
+
+inline ios_base& __cdecl noshowpoint(ios_base& _Iosbase)
+ {
+ _Iosbase.unsetf(ios_base::showpoint);
+ return (_Iosbase);
+ }
+
+inline ios_base& __cdecl noshowpos(ios_base& _Iosbase)
+ {
+ _Iosbase.unsetf(ios_base::showpos);
+ return (_Iosbase);
+ }
+
+inline ios_base& __cdecl noskipws(ios_base& _Iosbase)
+ {
+ _Iosbase.unsetf(ios_base::skipws);
+ return (_Iosbase);
+ }
+
+inline ios_base& __cdecl nounitbuf(ios_base& _Iosbase)
+ {
+ _Iosbase.unsetf(ios_base::unitbuf);
+ return (_Iosbase);
+ }
+
+inline ios_base& __cdecl nouppercase(ios_base& _Iosbase)
+ {
+ _Iosbase.unsetf(ios_base::uppercase);
+ return (_Iosbase);
+ }
+
+inline ios_base& __cdecl oct(ios_base& _Iosbase)
+ {
+ _Iosbase.setf(ios_base::oct, ios_base::basefield);
+ return (_Iosbase);
+ }
+
+inline ios_base& __cdecl right(ios_base& _Iosbase)
+ {
+ _Iosbase.setf(ios_base::right, ios_base::adjustfield);
+ return (_Iosbase);
+ }
+
+inline ios_base& __cdecl scientific(ios_base& _Iosbase)
+ {
+ _Iosbase.setf(ios_base::scientific, ios_base::floatfield);
+ return (_Iosbase);
+ }
+
+inline ios_base& __cdecl showbase(ios_base& _Iosbase)
+ {
+ _Iosbase.setf(ios_base::showbase);
+ return (_Iosbase);
+ }
+
+inline ios_base& __cdecl showpoint(ios_base& _Iosbase)
+ {
+ _Iosbase.setf(ios_base::showpoint);
+ return (_Iosbase);
+ }
+
+inline ios_base& __cdecl showpos(ios_base& _Iosbase)
+ {
+ _Iosbase.setf(ios_base::showpos);
+ return (_Iosbase);
+ }
+
+inline ios_base& __cdecl skipws(ios_base& _Iosbase)
+ {
+ _Iosbase.setf(ios_base::skipws);
+ return (_Iosbase);
+ }
+
+inline ios_base& __cdecl unitbuf(ios_base& _Iosbase)
+ {
+ _Iosbase.setf(ios_base::unitbuf);
+ return (_Iosbase);
+ }
+
+inline ios_base& __cdecl uppercase(ios_base& _Iosbase)
+ {
+ _Iosbase.setf(ios_base::uppercase);
+ return (_Iosbase);
+ }
+}
+
+
+#pragma warning(pop)
+#pragma pack(pop)
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma pack(push,8)
+#pragma warning(push,3)
+
+
+namespace std {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+template<class _Elem,
+ class _Traits>
+ class basic_ostream
+ : virtual public basic_ios<_Elem, _Traits>
+ {
+public:
+ typedef basic_ostream<_Elem, _Traits> _Myt;
+ typedef basic_ios<_Elem, _Traits> _Myios;
+ typedef basic_streambuf<_Elem, _Traits> _Mysb;
+ typedef ostreambuf_iterator<_Elem, _Traits> _Iter;
+ typedef num_put<_Elem, _Iter> _Nput;
+
+ explicit basic_ostream(basic_streambuf<_Elem, _Traits> *_Strbuf,
+ bool _Isstd = false)
+ {
+ _Myios::init(_Strbuf, _Isstd);
+ }
+
+ basic_ostream(_Uninitialized)
+ {
+ ios_base::_Addstd(this);
+ }
+
+ virtual ~basic_ostream()
+ {
+ }
+
+ typedef typename _Traits::int_type int_type;
+ typedef typename _Traits::pos_type pos_type;
+ typedef typename _Traits::off_type off_type;
+
+ class _Sentry_base
+ {
+ public:
+ _Sentry_base(_Myt& _Ostr)
+ : _Myostr(_Ostr)
+ {
+ if (_Myostr.rdbuf() != 0)
+ _Myostr.rdbuf()->_Lock();
+ }
+
+ ~_Sentry_base()
+ {
+ if (_Myostr.rdbuf() != 0)
+ _Myostr.rdbuf()->_Unlock();
+ }
+
+ _Myt& _Myostr;
+ };
+
+ class sentry
+ : public _Sentry_base
+ {
+ public:
+ explicit sentry(_Myt& _Ostr)
+ : _Sentry_base(_Ostr)
+ {
+ if (_Ostr.good() && _Ostr.tie() != 0)
+ _Ostr.tie()->flush();
+ _Ok = _Ostr.good();
+ }
+
+ ~sentry()
+ {
+
+
+ if (!std:: uncaught_exception())
+ this->_Myostr._Osfx();
+ }
+
+
+
+
+
+
+ operator bool() const
+ {
+ return (_Ok);
+ }
+
+ private:
+ sentry(const sentry&);
+ sentry& operator=(const sentry&);
+
+ bool _Ok;
+ };
+
+ bool opfx()
+ {
+ if (ios_base::good() && _Myios::tie() != 0)
+ _Myios::tie()->flush();
+ return (ios_base::good());
+ }
+
+ void osfx()
+ {
+ _Osfx();
+ }
+
+ void _Osfx()
+ {
+ try {
+ if (ios_base::flags() & ios_base::unitbuf)
+ flush();
+ } catch (...) {
+ }
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ _Myt& operator<<(_Myt& (__cdecl *_Pfn)(_Myt&))
+ {
+ ;
+ return ((*_Pfn)(*this));
+ }
+
+ _Myt& operator<<(_Myios& (__cdecl *_Pfn)(_Myios&))
+ {
+ ;
+ (*_Pfn)(*(_Myios *)this);
+ return (*this);
+ }
+
+ _Myt& operator<<(ios_base& (__cdecl *_Pfn)(ios_base&))
+ {
+ ;
+ (*_Pfn)(*(ios_base *)this);
+ return (*this);
+ }
+
+ _Myt& operator<<(_Bool _Val)
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ const sentry _Ok(*this);
+
+ if (_Ok)
+ {
+ const _Nput& _Nput_fac = use_facet<_Nput >(ios_base::getloc());
+
+ try {
+ if (_Nput_fac.put(_Iter(_Myios::rdbuf()), *this,
+ _Myios::fill(), _Val).failed())
+ _State |= ios_base::badbit;
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ _Myios::setstate(_State);
+ return (*this);
+ }
+
+ _Myt& operator<<(short _Val)
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ const sentry _Ok(*this);
+
+ if (_Ok)
+ {
+ const _Nput& _Nput_fac = use_facet<_Nput >(ios_base::getloc());
+ ios_base::fmtflags _Bfl =
+ ios_base::flags() & ios_base::basefield;
+ long _Tmp = (_Bfl == ios_base::oct
+ || _Bfl == ios_base::hex)
+ ? (long)(unsigned short)_Val : (long)_Val;
+
+ try {
+ if (_Nput_fac.put(_Iter(_Myios::rdbuf()), *this,
+ _Myios::fill(), _Tmp).failed())
+ _State |= ios_base::badbit;
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ _Myios::setstate(_State);
+ return (*this);
+ }
+
+
+
+
+
+
+
+
+
+ _Myt& operator<<(unsigned short _Val)
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ const sentry _Ok(*this);
+
+ if (_Ok)
+ {
+ const _Nput& _Nput_fac = use_facet<_Nput >(ios_base::getloc());
+
+ try {
+ if (_Nput_fac.put(_Iter(_Myios::rdbuf()), *this,
+ _Myios::fill(), (unsigned long)_Val).failed())
+ _State |= ios_base::badbit;
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ _Myios::setstate(_State);
+ return (*this);
+ }
+
+ _Myt& operator<<(int _Val)
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ const sentry _Ok(*this);
+
+ if (_Ok)
+ {
+ const _Nput& _Nput_fac = use_facet<_Nput >(ios_base::getloc());
+ ios_base::fmtflags _Bfl =
+ ios_base::flags() & ios_base::basefield;
+ long _Tmp = (_Bfl == ios_base::oct
+ || _Bfl == ios_base::hex)
+ ? (long)(unsigned int)_Val : (long)_Val;
+
+ try {
+ if (_Nput_fac.put(_Iter(_Myios::rdbuf()), *this,
+ _Myios::fill(), _Tmp).failed())
+ _State |= ios_base::badbit;
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ _Myios::setstate(_State);
+ return (*this);
+ }
+
+ _Myt& operator<<(unsigned int __w64 _Val)
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ const sentry _Ok(*this);
+
+ if (_Ok)
+ {
+ const _Nput& _Nput_fac = use_facet<_Nput >(ios_base::getloc());
+
+ try {
+ if (_Nput_fac.put(_Iter(_Myios::rdbuf()), *this,
+ _Myios::fill(), (unsigned long)_Val).failed())
+ _State |= ios_base::badbit;
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ _Myios::setstate(_State);
+ return (*this);
+ }
+
+ _Myt& operator<<(long _Val)
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ const sentry _Ok(*this);
+
+ if (_Ok)
+ {
+ const _Nput& _Nput_fac = use_facet<_Nput >(ios_base::getloc());
+
+ try {
+ if (_Nput_fac.put(_Iter(_Myios::rdbuf()), *this,
+ _Myios::fill(), _Val).failed())
+ _State |= ios_base::badbit;
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ _Myios::setstate(_State);
+ return (*this);
+ }
+
+ _Myt& operator<<(unsigned long __w64 _Val)
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ const sentry _Ok(*this);
+
+ if (_Ok)
+ {
+ const _Nput& _Nput_fac = use_facet<_Nput >(ios_base::getloc());
+
+ try {
+ if (_Nput_fac.put(_Iter(_Myios::rdbuf()), *this,
+ _Myios::fill(), (unsigned long)_Val).failed())
+ _State |= ios_base::badbit;
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ _Myios::setstate(_State);
+ return (*this);
+ }
+
+
+ _Myt& operator<<(__int64 _Val)
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ const sentry _Ok(*this);
+
+ if (_Ok)
+ {
+ const _Nput& _Nput_fac = use_facet<_Nput >(ios_base::getloc());
+
+ try {
+ if (_Nput_fac.put(_Iter(_Myios::rdbuf()), *this,
+ _Myios::fill(), _Val).failed())
+ _State |= ios_base::badbit;
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ _Myios::setstate(_State);
+ return (*this);
+ }
+
+ _Myt& operator<<(unsigned __int64 _Val)
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ const sentry _Ok(*this);
+
+ if (_Ok)
+ {
+ const _Nput& _Nput_fac = use_facet<_Nput >(ios_base::getloc());
+
+ try {
+ if (_Nput_fac.put(_Iter(_Myios::rdbuf()), *this,
+ _Myios::fill(), _Val).failed())
+ _State |= ios_base::badbit;
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ _Myios::setstate(_State);
+ return (*this);
+ }
+
+
+ _Myt& operator<<(float _Val)
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ const sentry _Ok(*this);
+
+ if (_Ok)
+ {
+ const _Nput& _Nput_fac = use_facet<_Nput >(ios_base::getloc());
+
+ try {
+ if (_Nput_fac.put(_Iter(_Myios::rdbuf()), *this,
+ _Myios::fill(), (double)_Val).failed())
+ _State |= ios_base::badbit;
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ _Myios::setstate(_State);
+ return (*this);
+ }
+
+ _Myt& operator<<(double _Val)
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ const sentry _Ok(*this);
+
+ if (_Ok)
+ {
+ const _Nput& _Nput_fac = use_facet<_Nput >(ios_base::getloc());
+
+ try {
+ if (_Nput_fac.put(_Iter(_Myios::rdbuf()), *this,
+ _Myios::fill(), _Val).failed())
+ _State |= ios_base::badbit;
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ _Myios::setstate(_State);
+ return (*this);
+ }
+
+ _Myt& operator<<(long double _Val)
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ const sentry _Ok(*this);
+
+ if (_Ok)
+ {
+ const _Nput& _Nput_fac = use_facet<_Nput >(ios_base::getloc());
+
+ try {
+ if (_Nput_fac.put(_Iter(_Myios::rdbuf()), *this,
+ _Myios::fill(), _Val).failed())
+ _State |= ios_base::badbit;
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ _Myios::setstate(_State);
+ return (*this);
+ }
+
+ _Myt& operator<<(const void *_Val)
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ const sentry _Ok(*this);
+
+ if (_Ok)
+ {
+ const _Nput& _Nput_fac = use_facet<_Nput >(ios_base::getloc());
+
+ try {
+ if (_Nput_fac.put(_Iter(_Myios::rdbuf()), *this,
+ _Myios::fill(), _Val).failed())
+ _State |= ios_base::badbit;
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ _Myios::setstate(_State);
+ return (*this);
+ }
+
+ _Myt& operator<<(_Mysb *_Strbuf)
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ bool _Copied = false;
+ const sentry _Ok(*this);
+
+ if (_Ok && _Strbuf != 0)
+ for (int_type _Meta = _Traits::eof(); ; _Copied = true)
+ {
+ try {
+ _Meta = _Traits::eq_int_type(_Traits::eof(), _Meta)
+ ? _Strbuf->sgetc() : _Strbuf->snextc();
+ } catch (...) {
+ _Myios::setstate(ios_base::failbit);
+ throw;
+ }
+
+ if (_Traits::eq_int_type(_Traits::eof(), _Meta))
+ break;
+
+ try {
+ if (_Traits::eq_int_type(_Traits::eof(),
+ _Myios::rdbuf()->sputc(
+ _Traits::to_char_type(_Meta))))
+ {
+ _State |= ios_base::badbit;
+ break;
+ }
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ ios_base::width(0);
+ _Myios::setstate(_Strbuf == 0 ? ios_base::badbit
+ : !_Copied ? _State | ios_base::failbit : _State);
+ return (*this);
+ }
+
+ _Myt& put(_Elem _Ch)
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ const sentry _Ok(*this);
+
+ if (!_Ok)
+ _State |= ios_base::badbit;
+ else
+ {
+ try {
+ if (_Traits::eq_int_type(_Traits::eof(),
+ _Myios::rdbuf()->sputc(_Ch)))
+ _State |= ios_base::badbit;
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ _Myios::setstate(_State);
+ return (*this);
+ }
+
+ _Myt& write(const _Elem *_Str,
+ streamsize _Count)
+ {
+ ;
+ ios_base::iostate _State = ios_base::goodbit;
+ const sentry _Ok(*this);
+
+ if (!_Ok)
+ _State |= ios_base::badbit;
+ else
+ {
+ try {
+ if (_Myios::rdbuf()->sputn(_Str, _Count) != _Count)
+ _State |= ios_base::badbit;
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ _Myios::setstate(_State);
+ return (*this);
+ }
+
+ _Myt& flush()
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ if (!ios_base::fail() && _Myios::rdbuf()->pubsync() == -1)
+ _State |= ios_base::badbit;
+ _Myios::setstate(_State);
+ return (*this);
+ }
+
+ _Myt& seekp(pos_type _Pos)
+ {
+ if (!ios_base::fail()
+ && (off_type)_Myios::rdbuf()->pubseekpos(_Pos,
+ ios_base::out) == _BADOFF)
+ _Myios::setstate(ios_base::failbit);
+ return (*this);
+ }
+
+ _Myt& seekp(off_type _Off, ios_base::seekdir _Way)
+ {
+ if (!ios_base::fail()
+ && (off_type)_Myios::rdbuf()->pubseekoff(_Off, _Way,
+ ios_base::out) == _BADOFF)
+ _Myios::setstate(ios_base::failbit);
+ return (*this);
+ }
+
+ pos_type tellp()
+ {
+ if (!ios_base::fail())
+ return (_Myios::rdbuf()->pubseekoff(0,
+ ios_base::cur, ios_base::out));
+ else
+ return (pos_type(_BADOFF));
+ }
+ };
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ template<class _Elem,
+ class _Traits> inline
+ basic_ostream<_Elem, _Traits>& __cdecl operator<<(
+ basic_ostream<_Elem, _Traits>& _Ostr, const char *_Val)
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ streamsize _Count = (streamsize)::strlen(_Val);
+ streamsize _Pad = _Ostr.width() <= 0 || _Ostr.width() <= _Count
+ ? 0 : _Ostr.width() - _Count;
+ const typename basic_ostream<_Elem, _Traits>::sentry _Ok(_Ostr);
+
+ if (!_Ok)
+ _State |= ios_base::badbit;
+ else
+ {
+ try {
+ const ctype<_Elem>& _Ctype_fac = use_facet<ctype<_Elem> >(_Ostr.getloc());
+ if ((_Ostr.flags() & ios_base::adjustfield) != ios_base::left)
+ for (; 0 < _Pad; --_Pad)
+ if (_Traits::eq_int_type(_Traits::eof(),
+ _Ostr.rdbuf()->sputc(_Ostr.fill())))
+ {
+ _State |= ios_base::badbit;
+ break;
+ }
+
+ for (; _State == ios_base::goodbit && 0 < _Count; --_Count, ++_Val)
+ if (_Traits::eq_int_type(_Traits::eof(),
+ _Ostr.rdbuf()->sputc(_Ctype_fac.widen(*_Val))))
+ _State |= ios_base::badbit;
+
+ if (_State == ios_base::goodbit)
+ for (; 0 < _Pad; --_Pad)
+ if (_Traits::eq_int_type(_Traits::eof(),
+ _Ostr.rdbuf()->sputc(_Ostr.fill())))
+ {
+ _State |= ios_base::badbit;
+ break;
+ }
+ _Ostr.width(0);
+ } catch (...) { (_Ostr).setstate(ios_base::badbit, true); }
+ }
+
+ _Ostr.setstate(_State);
+ return (_Ostr);
+ }
+
+template<class _Elem,
+ class _Traits> inline
+ basic_ostream<_Elem, _Traits>& __cdecl operator<<(
+ basic_ostream<_Elem, _Traits>& _Ostr, char _Ch)
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ const typename basic_ostream<_Elem, _Traits>::sentry _Ok(_Ostr);
+
+ if (_Ok)
+ {
+ const ctype<_Elem>& _Ctype_fac = use_facet<ctype<_Elem> >(_Ostr.getloc());
+ streamsize _Pad = _Ostr.width() <= 1 ? 0 : _Ostr.width() - 1;
+
+ try {
+ if ((_Ostr.flags() & ios_base::adjustfield) != ios_base::left)
+ for (; _State == ios_base::goodbit && 0 < _Pad;
+ --_Pad)
+ if (_Traits::eq_int_type(_Traits::eof(),
+ _Ostr.rdbuf()->sputc(_Ostr.fill())))
+ _State |= ios_base::badbit;
+
+ if (_State == ios_base::goodbit
+ && _Traits::eq_int_type(_Traits::eof(),
+ _Ostr.rdbuf()->sputc(_Ctype_fac.widen(_Ch))))
+ _State |= ios_base::badbit;
+
+ for (; _State == ios_base::goodbit && 0 < _Pad;
+ --_Pad)
+ if (_Traits::eq_int_type(_Traits::eof(),
+ _Ostr.rdbuf()->sputc(_Ostr.fill())))
+ _State |= ios_base::badbit;
+ } catch (...) { (_Ostr).setstate(ios_base::badbit, true); }
+ }
+
+ _Ostr.width(0);
+ _Ostr.setstate(_State);
+ return (_Ostr);
+ }
+
+template<class _Traits> inline
+ basic_ostream<char, _Traits>& __cdecl operator<<(
+ basic_ostream<char, _Traits>& _Ostr,
+ const char *_Val)
+ {
+ typedef char _Elem;
+ typedef basic_ostream<_Elem, _Traits> _Myos;
+ ios_base::iostate _State = ios_base::goodbit;
+ streamsize _Count = (streamsize)_Traits::length(_Val);
+ streamsize _Pad = _Ostr.width() <= 0 || _Ostr.width() <= _Count
+ ? 0 : _Ostr.width() - _Count;
+ const typename _Myos::sentry _Ok(_Ostr);
+
+ if (!_Ok)
+ _State |= ios_base::badbit;
+ else
+ {
+ try {
+ if ((_Ostr.flags() & ios_base::adjustfield) != ios_base::left)
+ for (; 0 < _Pad; --_Pad)
+ if (_Traits::eq_int_type(_Traits::eof(),
+ _Ostr.rdbuf()->sputc(_Ostr.fill())))
+ {
+ _State |= ios_base::badbit;
+ break;
+ }
+
+ if (_State == ios_base::goodbit
+ && _Ostr.rdbuf()->sputn(_Val, _Count) != _Count)
+ _State |= ios_base::badbit;
+
+ if (_State == ios_base::goodbit)
+ for (; 0 < _Pad; --_Pad)
+ if (_Traits::eq_int_type(_Traits::eof(),
+ _Ostr.rdbuf()->sputc(_Ostr.fill())))
+ {
+ _State |= ios_base::badbit;
+ break;
+ }
+ _Ostr.width(0);
+ } catch (...) { (_Ostr).setstate(ios_base::badbit, true); }
+ }
+
+ _Ostr.setstate(_State);
+ return (_Ostr);
+ }
+
+template<class _Traits> inline
+ basic_ostream<char, _Traits>& __cdecl operator<<(
+ basic_ostream<char, _Traits>& _Ostr, char _Ch)
+ {
+ typedef char _Elem;
+ typedef basic_ostream<_Elem, _Traits> _Myos;
+ ios_base::iostate _State = ios_base::goodbit;
+ const typename _Myos::sentry _Ok(_Ostr);
+
+ if (_Ok)
+ {
+ streamsize _Pad = _Ostr.width() <= 1 ? 0 : _Ostr.width() - 1;
+
+ try {
+ if ((_Ostr.flags() & ios_base::adjustfield) != ios_base::left)
+ for (; _State == ios_base::goodbit && 0 < _Pad;
+ --_Pad)
+ if (_Traits::eq_int_type(_Traits::eof(),
+ _Ostr.rdbuf()->sputc(_Ostr.fill())))
+ _State |= ios_base::badbit;
+
+ if (_State == ios_base::goodbit
+ && _Traits::eq_int_type(_Traits::eof(),
+ _Ostr.rdbuf()->sputc(_Ch)))
+ _State |= ios_base::badbit;
+
+ for (; _State == ios_base::goodbit && 0 < _Pad;
+ --_Pad)
+ if (_Traits::eq_int_type(_Traits::eof(),
+ _Ostr.rdbuf()->sputc(_Ostr.fill())))
+ _State |= ios_base::badbit;
+ } catch (...) { (_Ostr).setstate(ios_base::badbit, true); }
+ }
+
+ _Ostr.width(0);
+ _Ostr.setstate(_State);
+ return (_Ostr);
+ }
+
+template<class _Elem,
+ class _Traits> inline
+ basic_ostream<_Elem, _Traits>& __cdecl operator<<(
+ basic_ostream<_Elem, _Traits>& _Ostr, const _Elem *_Val)
+ {
+ typedef basic_ostream<_Elem, _Traits> _Myos;
+ ios_base::iostate _State = ios_base::goodbit;
+ streamsize _Count = (streamsize)_Traits::length(_Val);
+ streamsize _Pad = _Ostr.width() <= 0 || _Ostr.width() <= _Count
+ ? 0 : _Ostr.width() - _Count;
+ const typename _Myos::sentry _Ok(_Ostr);
+
+ if (!_Ok)
+ _State |= ios_base::badbit;
+ else
+ {
+ try {
+ if ((_Ostr.flags() & ios_base::adjustfield) != ios_base::left)
+ for (; 0 < _Pad; --_Pad)
+ if (_Traits::eq_int_type(_Traits::eof(),
+ _Ostr.rdbuf()->sputc(_Ostr.fill())))
+ {
+ _State |= ios_base::badbit;
+ break;
+ }
+
+ if (_State == ios_base::goodbit
+ && _Ostr.rdbuf()->sputn(_Val, _Count) != _Count)
+ _State |= ios_base::badbit;
+
+ if (_State == ios_base::goodbit)
+ for (; 0 < _Pad; --_Pad)
+ if (_Traits::eq_int_type(_Traits::eof(),
+ _Ostr.rdbuf()->sputc(_Ostr.fill())))
+ {
+ _State |= ios_base::badbit;
+ break;
+ }
+ _Ostr.width(0);
+ } catch (...) { (_Ostr).setstate(ios_base::badbit, true); }
+ }
+
+ _Ostr.setstate(_State);
+ return (_Ostr);
+ }
+
+template<class _Elem,
+ class _Traits> inline
+ basic_ostream<_Elem, _Traits>& __cdecl operator<<(
+ basic_ostream<_Elem, _Traits>& _Ostr, _Elem _Ch)
+ {
+ typedef basic_ostream<_Elem, _Traits> _Myos;
+ ios_base::iostate _State = ios_base::goodbit;
+ const typename _Myos::sentry _Ok(_Ostr);
+
+ if (_Ok)
+ {
+ streamsize _Pad = _Ostr.width() <= 1 ? 0 : _Ostr.width() - 1;
+
+ try {
+ if ((_Ostr.flags() & ios_base::adjustfield) != ios_base::left)
+ for (; _State == ios_base::goodbit && 0 < _Pad;
+ --_Pad)
+ if (_Traits::eq_int_type(_Traits::eof(),
+ _Ostr.rdbuf()->sputc(_Ostr.fill())))
+ _State |= ios_base::badbit;
+
+ if (_State == ios_base::goodbit
+ && _Traits::eq_int_type(_Traits::eof(),
+ _Ostr.rdbuf()->sputc(_Ch)))
+ _State |= ios_base::badbit;
+
+ for (; _State == ios_base::goodbit && 0 < _Pad;
+ --_Pad)
+ if (_Traits::eq_int_type(_Traits::eof(),
+ _Ostr.rdbuf()->sputc(_Ostr.fill())))
+ _State |= ios_base::badbit;
+ } catch (...) { (_Ostr).setstate(ios_base::badbit, true); }
+ }
+
+ _Ostr.width(0);
+ _Ostr.setstate(_State);
+ return (_Ostr);
+ }
+
+template<class _Traits> inline
+ basic_ostream<char, _Traits>& __cdecl operator<<(
+ basic_ostream<char, _Traits>& _Ostr, const signed char *_Val)
+ {
+ return (_Ostr << (const char *)_Val);
+ }
+
+template<class _Traits> inline
+ basic_ostream<char, _Traits>& __cdecl operator<<(
+ basic_ostream<char, _Traits>& _Ostr, signed char _Ch)
+ {
+ return (_Ostr << (char)_Ch);
+ }
+
+template<class _Traits> inline
+ basic_ostream<char, _Traits>& __cdecl operator<<(
+ basic_ostream<char, _Traits>& _Ostr, const unsigned char *_Val)
+ {
+ return (_Ostr << (const char *)_Val);
+ }
+
+template<class _Traits> inline
+ basic_ostream<char, _Traits>& __cdecl operator<<(
+ basic_ostream<char, _Traits>& _Ostr, unsigned char _Ch)
+ {
+ return (_Ostr << (char)_Ch);
+ }
+
+
+template<class _Elem,
+ class _Traits> inline
+ basic_ostream<_Elem, _Traits>&
+ __cdecl endl(basic_ostream<_Elem, _Traits>& _Ostr)
+ {
+ _Ostr.put(_Ostr.widen('\n'));
+ _Ostr.flush();
+ return (_Ostr);
+ }
+
+template<class _Elem,
+ class _Traits> inline
+ basic_ostream<_Elem, _Traits>&
+ __cdecl ends(basic_ostream<_Elem, _Traits>& _Ostr)
+ {
+ _Ostr.put(_Elem());
+ return (_Ostr);
+ }
+
+template<class _Elem,
+ class _Traits> inline
+ basic_ostream<_Elem, _Traits>&
+ __cdecl flush(basic_ostream<_Elem, _Traits>& _Ostr)
+ {
+ _Ostr.flush();
+ return (_Ostr);
+ }
+
+ inline basic_ostream<char, char_traits<char> >&
+ __cdecl endl(basic_ostream<char, char_traits<char> >& _Ostr)
+ {
+ _Ostr.put('\n');
+ _Ostr.flush();
+ return (_Ostr);
+ }
+
+ inline basic_ostream<wchar_t, char_traits<wchar_t> >&
+ __cdecl endl(basic_ostream<wchar_t,
+ char_traits<wchar_t> >& _Ostr)
+ {
+ _Ostr.put('\n');
+ _Ostr.flush();
+ return (_Ostr);
+ }
+
+
+ inline basic_ostream<char, char_traits<char> >&
+ __cdecl ends(basic_ostream<char, char_traits<char> >& _Ostr)
+ {
+ _Ostr.put('\0');
+ return (_Ostr);
+ }
+
+ inline basic_ostream<wchar_t, char_traits<wchar_t> >&
+ __cdecl ends(basic_ostream<wchar_t,
+ char_traits<wchar_t> >& _Ostr)
+ {
+ _Ostr.put('\0');
+ return (_Ostr);
+ }
+
+
+ inline basic_ostream<char, char_traits<char> >&
+ __cdecl flush(basic_ostream<char, char_traits<char> >& _Ostr)
+ {
+ _Ostr.flush();
+ return (_Ostr);
+ }
+
+ inline basic_ostream<wchar_t, char_traits<wchar_t> >&
+ __cdecl flush(basic_ostream<wchar_t,
+ char_traits<wchar_t> >& _Ostr)
+ {
+ _Ostr.flush();
+ return (_Ostr);
+ }
+
+
+
+
+
+
+}
+
+
+#pragma warning(pop)
+#pragma pack(pop)
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma pack(push,8)
+#pragma warning(push,3)
+
+
+namespace std {
+
+
+template<class _Elem,
+ class _Traits>
+ class basic_istream
+ : virtual public basic_ios<_Elem, _Traits>
+ {
+public:
+ typedef basic_istream<_Elem, _Traits> _Myt;
+ typedef basic_ios<_Elem, _Traits> _Myios;
+ typedef basic_streambuf<_Elem, _Traits> _Mysb;
+ typedef istreambuf_iterator<_Elem, _Traits> _Iter;
+ typedef ctype<_Elem> _Ctype;
+ typedef num_get<_Elem, _Iter> _Nget;
+
+
+ explicit basic_istream(_Mysb *_Strbuf, bool _Isstd = false)
+ : _Chcount(0)
+ {
+ _Myios::init(_Strbuf, _Isstd);
+ }
+
+ basic_istream(_Uninitialized)
+ {
+ ios_base::_Addstd(this);
+ }
+
+ virtual ~basic_istream()
+ {
+ }
+
+ typedef typename _Traits::int_type int_type;
+ typedef typename _Traits::pos_type pos_type;
+ typedef typename _Traits::off_type off_type;
+
+
+ class _Sentry_base
+ {
+ public:
+ _Sentry_base(_Myt& _Istr)
+ : _Myistr(_Istr)
+ {
+ if (_Myistr.rdbuf() != 0)
+ _Myistr.rdbuf()->_Lock();
+ }
+
+ ~_Sentry_base()
+ {
+ if (_Myistr.rdbuf() != 0)
+ _Myistr.rdbuf()->_Unlock();
+ }
+
+ _Myt& _Myistr;
+ };
+
+ class sentry
+ : public _Sentry_base
+ {
+ public:
+ explicit sentry(_Myt& _Istr, bool _Noskip = false)
+ : _Sentry_base(_Istr)
+ {
+ _Ok = this->_Myistr._Ipfx(_Noskip);
+ }
+
+ operator bool() const
+ {
+ return (_Ok);
+ }
+
+ private:
+ sentry(const sentry&);
+ sentry& operator=(const sentry&);
+
+ bool _Ok;
+ };
+
+ bool _Ipfx(bool _Noskip = false)
+ {
+ if (ios_base::good())
+ {
+ if (_Myios::tie() != 0)
+ _Myios::tie()->flush();
+
+ if (!_Noskip && ios_base::flags() & ios_base::skipws)
+ {
+ const _Ctype& _Ctype_fac = use_facet<_Ctype >(ios_base::getloc());
+
+ try {
+ int_type _Meta = _Myios::rdbuf()->sgetc();
+
+ for (; ; _Meta = _Myios::rdbuf()->snextc())
+ if (_Traits::eq_int_type(_Traits::eof(), _Meta))
+ {
+ _Myios::setstate(ios_base::eofbit);
+ break;
+ }
+ else if (!_Ctype_fac.is(_Ctype::space,
+ _Traits::to_char_type(_Meta)))
+ break;
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ if (ios_base::good())
+ return (true);
+ }
+ _Myios::setstate(ios_base::failbit);
+ return (false);
+ }
+
+ bool ipfx(bool _Noskip = false)
+ {
+ return _Ipfx(_Noskip);
+ }
+
+ void isfx()
+ {
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ _Myt& operator>>(_Myt& (__cdecl *_Pfn)(_Myt&))
+ {
+ ;
+ return ((*_Pfn)(*this));
+ }
+
+ _Myt& operator>>(_Myios& (__cdecl *_Pfn)(_Myios&))
+ {
+ ;
+ (*_Pfn)(*(_Myios *)this);
+ return (*this);
+ }
+
+ _Myt& operator>>(ios_base& (__cdecl *_Pfn)(ios_base&))
+ {
+ ;
+ (*_Pfn)(*(ios_base *)this);
+ return (*this);
+ }
+
+ _Myt& operator>>(_Bool& _Val)
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ const sentry _Ok(*this);
+
+ if (_Ok)
+ {
+ const _Nget& _Nget_fac = use_facet<_Nget >(ios_base::getloc());
+
+ try {
+ _Nget_fac.get(_Iter(_Myios::rdbuf()), _Iter(0),
+ *this, _State, _Val);
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ _Myios::setstate(_State);
+ return (*this);
+ }
+
+ _Myt& operator>>(short& _Val)
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ const sentry _Ok(*this);
+
+ if (_Ok)
+ {
+ long _Tmp = 0;
+ const _Nget& _Nget_fac = use_facet<_Nget >(ios_base::getloc());
+
+ try {
+ _Nget_fac.get(_Iter(_Myios::rdbuf()), _Iter(0),
+ *this, _State, _Tmp);
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+
+ if (_State & ios_base::failbit
+ || _Tmp < (-32768) || 32767 < _Tmp)
+ _State |= ios_base::failbit;
+ else
+ _Val = (short)_Tmp;
+ }
+
+ _Myios::setstate(_State);
+ return (*this);
+ }
+
+
+
+
+
+
+
+
+
+ _Myt& operator>>(unsigned short& _Val)
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ const sentry _Ok(*this);
+
+ if (_Ok)
+ {
+ const _Nget& _Nget_fac = use_facet<_Nget >(ios_base::getloc());
+
+ try {
+ _Nget_fac.get(_Iter(_Myios::rdbuf()), _Iter(0),
+ *this, _State, _Val);
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ _Myios::setstate(_State);
+ return (*this);
+ }
+
+ _Myt& operator>>(int& _Val)
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ const sentry _Ok(*this);
+
+ if (_Ok)
+ {
+ long _Tmp = 0;
+ const _Nget& _Nget_fac = use_facet<_Nget >(ios_base::getloc());
+
+ try {
+ _Nget_fac.get(_Iter(_Myios::rdbuf()), _Iter(0),
+ *this, _State, _Tmp);
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+
+ if (_State & ios_base::failbit
+ || _Tmp < (-2147483647 - 1) || 2147483647 < _Tmp)
+ _State |= ios_base::failbit;
+ else
+ _Val = _Tmp;
+ }
+
+ _Myios::setstate(_State);
+ return (*this);
+ }
+
+ _Myt& operator>>(unsigned int& _Val)
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ const sentry _Ok(*this);
+ if (_Ok)
+ {
+ const _Nget& _Nget_fac = use_facet<_Nget >(ios_base::getloc());
+
+ try {
+ _Nget_fac.get(_Iter(_Myios::rdbuf()), _Iter(0),
+ *this, _State, _Val);
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ _Myios::setstate(_State);
+ return (*this);
+ }
+
+ _Myt& operator>>(long& _Val)
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ const sentry _Ok(*this);
+
+ if (_Ok)
+ {
+ const _Nget& _Nget_fac = use_facet<_Nget >(ios_base::getloc());
+ try {
+ _Nget_fac.get(_Iter(_Myios::rdbuf()), _Iter(0),
+ *this, _State, _Val);
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ _Myios::setstate(_State);
+ return (*this);
+ }
+
+ _Myt& operator>>(unsigned long __w64& _Val)
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ const sentry _Ok(*this);
+
+ if (_Ok)
+ {
+ const _Nget& _Nget_fac = use_facet<_Nget >(ios_base::getloc());
+
+ try {
+ _Nget_fac.get(_Iter(_Myios::rdbuf()), _Iter(0),
+ *this, _State, (unsigned long)_Val);
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ _Myios::setstate(_State);
+ return (*this);
+ }
+
+
+ _Myt& operator>>(__int64& _Val)
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ const sentry _Ok(*this);
+
+ if (_Ok)
+ {
+ const _Nget& _Nget_fac = use_facet<_Nget >(ios_base::getloc());
+
+ try {
+ _Nget_fac.get(_Iter(_Myios::rdbuf()), _Iter(0),
+ *this, _State, _Val);
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ _Myios::setstate(_State);
+ return (*this);
+ }
+
+ _Myt& operator>>(unsigned __int64& _Val)
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ const sentry _Ok(*this);
+ if (_Ok)
+ {
+ const _Nget& _Nget_fac = use_facet<_Nget >(ios_base::getloc());
+
+ try {
+ _Nget_fac.get(_Iter(_Myios::rdbuf()), _Iter(0),
+ *this, _State, _Val);
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ _Myios::setstate(_State);
+ return (*this);
+ }
+
+
+ _Myt& operator>>(float& _Val)
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ const sentry _Ok(*this);
+
+ if (_Ok)
+ {
+ const _Nget& _Nget_fac = use_facet<_Nget >(ios_base::getloc());
+
+ try {
+ _Nget_fac.get(_Iter(_Myios::rdbuf()), _Iter(0),
+ *this, _State, _Val);
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ _Myios::setstate(_State);
+ return (*this);
+ }
+
+ _Myt& operator>>(double& _Val)
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ const sentry _Ok(*this);
+ if (_Ok)
+ {
+ const _Nget& _Nget_fac = use_facet<_Nget >(ios_base::getloc());
+
+ try {
+ _Nget_fac.get(_Iter(_Myios::rdbuf()), _Iter(0),
+ *this, _State, _Val);
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ _Myios::setstate(_State);
+ return (*this);
+ }
+
+ _Myt& operator>>(long double& _Val)
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ const sentry _Ok(*this);
+
+ if (_Ok)
+ {
+ const _Nget& _Nget_fac = use_facet<_Nget >(ios_base::getloc());
+ try {
+ _Nget_fac.get(_Iter(_Myios::rdbuf()), _Iter(0),
+ *this, _State, _Val);
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ _Myios::setstate(_State);
+ return (*this);
+ }
+
+ _Myt& operator>>(void *& _Val)
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ const sentry _Ok(*this);
+
+ if (_Ok)
+ {
+ const _Nget& _Nget_fac = use_facet<_Nget >(ios_base::getloc());
+
+ try {
+ _Nget_fac.get(_Iter(_Myios::rdbuf()), _Iter(0),
+ *this, _State, _Val);
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ _Myios::setstate(_State);
+ return (*this);
+ }
+
+ _Myt& operator>>(_Mysb *_Strbuf)
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ bool _Copied = false;
+ const sentry _Ok(*this);
+
+ if (_Ok && _Strbuf != 0)
+ {
+ try {
+ int_type _Meta = _Myios::rdbuf()->sgetc();
+
+ for (; ; _Meta = _Myios::rdbuf()->snextc())
+ if (_Traits::eq_int_type(_Traits::eof(), _Meta))
+ {
+ _State |= ios_base::eofbit;
+ break;
+ }
+ else
+ {
+ try {
+ if (_Traits::eq_int_type(_Traits::eof(),
+ _Strbuf->sputc(_Traits::to_char_type(_Meta))))
+ break;
+ } catch (...) {
+ break;
+ }
+ _Copied = true;
+ }
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ _Myios::setstate(!_Copied ? _State | ios_base::failbit : _State);
+ return (*this);
+ }
+
+ int_type get()
+ {
+ int_type _Meta = 0;
+ ios_base::iostate _State = ios_base::goodbit;
+ _Chcount = 0;
+ const sentry _Ok(*this, true);
+
+ if (!_Ok)
+ _Meta = _Traits::eof();
+ else
+ {
+ try {
+ _Meta = _Myios::rdbuf()->sbumpc();
+
+ if (_Traits::eq_int_type(_Traits::eof(), _Meta))
+ _State |= ios_base::eofbit | ios_base::failbit;
+ else
+ ++_Chcount;
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ _Myios::setstate(_State);
+ return (_Meta);
+ }
+
+ _Myt& get(_Elem *_Str, streamsize _Count)
+ {
+ return (get(_Str, _Count, _Myios::widen('\n')));
+ }
+
+ _Myt& get(_Elem *_Str,
+ streamsize _Count, _Elem _Delim)
+ {
+ ;
+ ios_base::iostate _State = ios_base::goodbit;
+ _Chcount = 0;
+ const sentry _Ok(*this, true);
+
+ if (_Ok && 0 < _Count)
+ {
+ try {
+ int_type _Meta = _Myios::rdbuf()->sgetc();
+
+ for (; 0 < --_Count; _Meta = _Myios::rdbuf()->snextc())
+ if (_Traits::eq_int_type(_Traits::eof(), _Meta))
+ {
+ _State |= ios_base::eofbit;
+ break;
+ }
+ else if (_Traits::to_char_type(_Meta) == _Delim)
+ break;
+ else
+ {
+ *_Str++ = _Traits::to_char_type(_Meta);
+ ++_Chcount;
+ }
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ _Myios::setstate(_Chcount == 0
+ ? _State | ios_base::failbit : _State);
+ *_Str = _Elem();
+ return (*this);
+ }
+
+ _Myt& get(_Elem& _Ch)
+ {
+ int_type _Meta = get();
+ if (!_Traits::eq_int_type(_Traits::eof(), _Meta))
+ _Ch = _Traits::to_char_type(_Meta);
+ return (*this);
+ }
+
+ _Myt& get(_Mysb& _Strbuf)
+ {
+ return (get(_Strbuf, _Myios::widen('\n')));
+ }
+
+ _Myt& get(_Mysb& _Strbuf, _Elem _Delim)
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ _Chcount = 0;
+ const sentry _Ok(*this, true);
+
+ if (_Ok)
+ {
+ try {
+ int_type _Meta = _Myios::rdbuf()->sgetc();
+
+ for (; ; _Meta = _Myios::rdbuf()->snextc())
+ if (_Traits::eq_int_type(_Traits::eof(), _Meta))
+ {
+ _State |= ios_base::eofbit;
+ break;
+ }
+ else
+ {
+ try {
+ _Elem _Ch = _Traits::to_char_type(_Meta);
+ if (_Ch == _Delim
+ || _Traits::eq_int_type(_Traits::eof(),
+ _Strbuf.sputc(_Ch)))
+ break;
+ } catch (...) {
+ break;
+ }
+ ++_Chcount;
+ }
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ if (_Chcount == 0)
+ _State |= ios_base::failbit;
+ _Myios::setstate(_State);
+ return (*this);
+ }
+
+ _Myt& getline(_Elem *_Str, streamsize _Count)
+ {
+ return (getline(_Str, _Count, _Myios::widen('\n')));
+ }
+
+ _Myt& getline(_Elem *_Str,
+ streamsize _Count, _Elem _Delim)
+ {
+ ;
+ ios_base::iostate _State = ios_base::goodbit;
+ _Chcount = 0;
+ const sentry _Ok(*this, true);
+
+ if (_Ok && 0 < _Count)
+ {
+ int_type _Metadelim = _Traits::to_int_type(_Delim);
+
+ try {
+ int_type _Meta = _Myios::rdbuf()->sgetc();
+
+ for (; ; _Meta = _Myios::rdbuf()->snextc())
+ if (_Traits::eq_int_type(_Traits::eof(), _Meta))
+ {
+ _State |= ios_base::eofbit;
+ break;
+ }
+ else if (_Meta == _Metadelim)
+ {
+ ++_Chcount;
+ _Myios::rdbuf()->sbumpc();
+ break;
+ }
+ else if (--_Count <= 0)
+ {
+ _State |= ios_base::failbit;
+ break;
+ }
+ else
+ {
+ ++_Chcount;
+ *_Str++ = _Traits::to_char_type(_Meta);
+ }
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ *_Str = _Elem();
+ _Myios::setstate(_Chcount == 0 ? _State | ios_base::failbit : _State);
+ return (*this);
+ }
+
+ _Myt& ignore(streamsize _Count = 1,
+ int_type _Metadelim = _Traits::eof())
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ _Chcount = 0;
+ const sentry _Ok(*this, true);
+
+ if (_Ok && 0 < _Count)
+ {
+ try {
+ for (; ; )
+ {
+ int_type _Meta;
+ if (_Count != 2147483647 && --_Count < 0)
+ break;
+ else if (_Traits::eq_int_type(_Traits::eof(),
+ _Meta = _Myios::rdbuf()->sbumpc()))
+ {
+ _State |= ios_base::eofbit;
+ break;
+ }
+ else
+ {
+ ++_Chcount;
+ if (_Meta == _Metadelim)
+ break;
+ }
+ }
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ _Myios::setstate(_State);
+ return (*this);
+ }
+
+ _Myt& _Read_s(_Elem *_Str, size_t _Str_size, streamsize _Count)
+ {
+ ;
+ ios_base::iostate _State = ios_base::goodbit;
+ _Chcount = 0;
+ const sentry _Ok(*this, true);
+
+ if (_Ok)
+ {
+ try {
+ const streamsize _Num = _Myios::rdbuf()->_Sgetn_s(_Str, _Str_size, _Count);
+ _Chcount += _Num;
+ if (_Num != _Count)
+ _State |= ios_base::eofbit | ios_base::failbit;
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ _Myios::setstate(_State);
+ return (*this);
+ }
+
+ _Myt& read(_Elem *_Str, streamsize _Count)
+ {
+ return _Read_s(_Str, (size_t)-1, _Count);
+ }
+
+ streamsize _Readsome_s(_Elem *_Str, size_t _Str_size, streamsize _Count)
+ {
+ ;
+ ios_base::iostate _State = ios_base::goodbit;
+ _Chcount = 0;
+ const sentry _Ok(*this, true);
+ streamsize _Num;
+
+ if (!_Ok)
+ _State |= ios_base::failbit;
+ else if ((_Num = _Myios::rdbuf()->in_avail()) < 0)
+ _State |= ios_base::eofbit;
+ else if (0 < _Num)
+ _Read_s(_Str, _Str_size, _Num < _Count ? _Num : _Count);
+
+ _Myios::setstate(_State);
+ return (gcount());
+ }
+
+ __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
+ streamsize readsome(_Elem *_Str, streamsize _Count)
+ {
+ return _Readsome_s(_Str, (size_t)-1, _Count);
+ }
+
+ int_type peek()
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ _Chcount = 0;
+ int_type _Meta = 0;
+ const sentry _Ok(*this, true);
+
+ if (!_Ok)
+ _Meta = _Traits::eof();
+ else
+ {
+ try {
+ if (_Traits::eq_int_type(_Traits::eof(),
+ _Meta = _Myios::rdbuf()->sgetc()))
+ _State |= ios_base::eofbit;
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ _Myios::setstate(_State);
+ return (_Meta);
+ }
+
+ _Myt& putback(_Elem _Ch)
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ _Chcount = 0;
+ const sentry _Ok(*this, true);
+
+ if (_Ok)
+ {
+ try {
+ if (_Traits::eq_int_type(_Traits::eof(),
+ _Myios::rdbuf()->sputbackc(_Ch)))
+ _State |= ios_base::badbit;
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ _Myios::setstate(_State);
+ return (*this);
+ }
+
+ _Myt& unget()
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ _Chcount = 0;
+ const sentry _Ok(*this, true);
+
+ if (_Ok)
+ {
+ try {
+ if (_Traits::eq_int_type(_Traits::eof(),
+ _Myios::rdbuf()->sungetc()))
+ _State |= ios_base::badbit;
+ } catch (...) { _Myios::setstate(ios_base::badbit, true); }
+ }
+
+ _Myios::setstate(_State);
+ return (*this);
+ }
+
+ streamsize gcount() const
+ {
+ return (_Chcount);
+ }
+
+ int sync()
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ int _Ans;
+
+ if (_Myios::rdbuf() == 0)
+ _Ans = -1;
+ else if (_Myios::rdbuf()->pubsync() == -1)
+ {
+ _State |= ios_base::badbit;
+ _Ans = -1;
+ }
+ else
+ _Ans = 0;
+
+ _Myios::setstate(_State);
+ return (_Ans);
+ }
+
+ _Myt& seekg(pos_type _Pos)
+ {
+ if (!ios_base::fail()
+ && (off_type)_Myios::rdbuf()->pubseekpos(_Pos,
+ ios_base::in) == _BADOFF)
+ _Myios::setstate(ios_base::failbit);
+ return (*this);
+ }
+
+ _Myt& seekg(off_type _Off, ios_base::seekdir _Way)
+ {
+ if (!ios_base::fail()
+ && (off_type)_Myios::rdbuf()->pubseekoff(_Off, _Way,
+ ios_base::in) == _BADOFF)
+ _Myios::setstate(ios_base::failbit);
+ return (*this);
+ }
+
+ pos_type tellg()
+ {
+ if (!ios_base::fail())
+ return (_Myios::rdbuf()->pubseekoff(0,
+ ios_base::cur, ios_base::in));
+ else
+ return (pos_type(_BADOFF));
+ }
+
+private:
+ streamsize _Chcount;
+ };
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+template<class _Elem,
+ class _Traits>
+ class basic_iostream
+ : public basic_istream<_Elem, _Traits>,
+ public basic_ostream<_Elem, _Traits>
+ {
+public:
+ typedef _Elem char_type;
+ typedef _Traits traits_type;
+ typedef typename _Traits::int_type int_type;
+ typedef typename _Traits::pos_type pos_type;
+ typedef typename _Traits::off_type off_type;
+
+ explicit basic_iostream(basic_streambuf<_Elem, _Traits> *_Strbuf)
+ : basic_istream<_Elem, _Traits>(_Strbuf, false),
+ basic_ostream<_Elem, _Traits>(_Strbuf)
+ {
+ }
+
+ virtual ~basic_iostream()
+ {
+ }
+ };
+
+
+
+
+
+
+
+
+
+
+
+template<class _Elem,
+ class _Traits> inline
+ basic_istream<_Elem, _Traits>& __cdecl operator>>(
+ basic_istream<_Elem, _Traits>& _Istr, _Elem *_Str)
+ {
+ ;
+ typedef basic_istream<_Elem, _Traits> _Myis;
+ typedef ctype<_Elem> _Ctype;
+ ios_base::iostate _State = ios_base::goodbit;
+ _Elem *_Str0 = _Str;
+ const typename _Myis::sentry _Ok(_Istr);
+
+ if (_Ok)
+ {
+ const _Ctype& _Ctype_fac = use_facet<_Ctype >(_Istr.getloc());
+
+ try {
+ streamsize _Count = 0 < _Istr.width() ? _Istr.width() : 2147483647;
+ typename _Myis::int_type _Meta = _Istr.rdbuf()->sgetc();
+ _Elem _Ch;
+ for (; 0 < --_Count; _Meta = _Istr.rdbuf()->snextc())
+ if (_Traits::eq_int_type(_Traits::eof(), _Meta))
+ {
+ _State |= ios_base::eofbit;
+ break;
+ }
+ else if (_Ctype_fac.is(_Ctype::space,
+ _Ch = _Traits::to_char_type(_Meta))
+ || _Ch == _Elem())
+ break;
+ else
+ *_Str++ = _Traits::to_char_type(_Meta);
+ } catch (...) { (_Istr).setstate(ios_base::badbit, true); }
+ }
+
+ *_Str = _Elem();
+ _Istr.width(0);
+ _Istr.setstate(_Str == _Str0 ? _State | ios_base::failbit : _State);
+ return (_Istr);
+ }
+
+template<class _Elem,
+ class _Traits> inline
+ basic_istream<_Elem, _Traits>& __cdecl operator>>(
+ basic_istream<_Elem, _Traits>& _Istr, _Elem& _Ch)
+ {
+ typedef basic_istream<_Elem, _Traits> _Myis;
+ typename _Myis::int_type _Meta;
+ ios_base::iostate _State = ios_base::goodbit;
+ const typename _Myis::sentry _Ok(_Istr);
+
+ if (_Ok)
+ {
+ try {
+ _Meta = _Istr.rdbuf()->sbumpc();
+ if (_Traits::eq_int_type(_Traits::eof(), _Meta))
+ _State |= ios_base::eofbit | ios_base::failbit;
+ else
+ _Ch = _Traits::to_char_type(_Meta);
+ } catch (...) { (_Istr).setstate(ios_base::badbit, true); }
+ }
+
+ _Istr.setstate(_State);
+ return (_Istr);
+ }
+
+template<class _Traits> inline
+ basic_istream<char, _Traits>& __cdecl operator>>(
+ basic_istream<char, _Traits>& _Istr, signed char *_Str)
+ {
+ return (_Istr >> (char *)_Str);
+ }
+
+template<class _Traits> inline
+ basic_istream<char, _Traits>& __cdecl operator>>(
+ basic_istream<char, _Traits>& _Istr, signed char& _Ch)
+ {
+ return (_Istr >> (char&)_Ch);
+ }
+
+template<class _Traits> inline
+ basic_istream<char, _Traits>& __cdecl operator>>(
+ basic_istream<char, _Traits>& _Istr, unsigned char *_Str)
+ {
+ return (_Istr >> (char *)_Str);
+ }
+
+template<class _Traits> inline
+ basic_istream<char, _Traits>& __cdecl operator>>(
+ basic_istream<char, _Traits>& _Istr, unsigned char& _Ch)
+ {
+ return (_Istr >> (char&)_Ch);
+ }
+
+
+template<class _Elem,
+ class _Traits> inline
+ basic_istream<_Elem, _Traits>&
+ __cdecl ws(basic_istream<_Elem, _Traits>& _Istr)
+ {
+ typedef basic_istream<_Elem, _Traits> _Myis;
+ typedef ctype<_Elem> _Ctype;
+
+ if (!_Istr.eof())
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ const typename _Myis::sentry _Ok(_Istr, true);
+
+ if (_Ok)
+ {
+ const _Ctype& _Ctype_fac = use_facet<_Ctype >(_Istr.getloc());
+
+ try {
+ for (typename _Traits::int_type _Meta = _Istr.rdbuf()->sgetc(); ;
+ _Meta = _Istr.rdbuf()->snextc())
+ if (_Traits::eq_int_type(_Traits::eof(), _Meta))
+ {
+ _State |= ios_base::eofbit;
+ break;
+ }
+ else if (!_Ctype_fac.is(_Ctype::space,
+ _Traits::to_char_type(_Meta)))
+ break;
+ } catch (...) { (_Istr).setstate(ios_base::badbit, true); }
+ }
+
+ _Istr.setstate(_State);
+ }
+ return (_Istr);
+ }
+
+ inline basic_istream<char, char_traits<char> >&
+ __cdecl ws(basic_istream<char, char_traits<char> >& _Istr)
+ {
+ typedef char _Elem;
+ typedef char_traits<_Elem> _Traits;
+
+ if (!_Istr.eof())
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ const basic_istream<_Elem, _Traits>::sentry _Ok(_Istr, true);
+
+ if (_Ok)
+ {
+ const ctype<_Elem>& _Ctype_fac =
+ use_facet<ctype<_Elem> >(_Istr.getloc());
+
+ try {
+ for (_Traits::int_type _Meta = _Istr.rdbuf()->sgetc(); ;
+ _Meta = _Istr.rdbuf()->snextc())
+ if (_Traits::eq_int_type(_Traits::eof(), _Meta))
+ {
+ _State |= ios_base::eofbit;
+ break;
+ }
+ else if (!_Ctype_fac.is(ctype<_Elem>::space,
+ _Traits::to_char_type(_Meta)))
+ break;
+ } catch (...) { (_Istr).setstate(ios_base::badbit, true); }
+ }
+
+ _Istr.setstate(_State);
+ }
+ return (_Istr);
+ }
+
+ inline basic_istream<wchar_t, char_traits<wchar_t> >&
+ __cdecl ws(basic_istream<wchar_t, char_traits<wchar_t> >& _Istr)
+ {
+ typedef wchar_t _Elem;
+ typedef char_traits<_Elem> _Traits;
+
+ if (!_Istr.eof())
+ {
+ ios_base::iostate _State = ios_base::goodbit;
+ const basic_istream<_Elem, _Traits>::sentry _Ok(_Istr, true);
+
+ if (_Ok)
+ {
+ const ctype<_Elem>& _Ctype_fac =
+ use_facet<ctype<_Elem> >(_Istr.getloc());
+
+ try {
+ for (_Traits::int_type _Meta = _Istr.rdbuf()->sgetc(); ;
+ _Meta = _Istr.rdbuf()->snextc())
+ if (_Traits::eq_int_type(_Traits::eof(), _Meta))
+ {
+ _State |= ios_base::eofbit;
+ break;
+ }
+ else if (!_Ctype_fac.is(ctype<_Elem>::space,
+ _Traits::to_char_type(_Meta)))
+ break;
+ } catch (...) { (_Istr).setstate(ios_base::badbit, true); }
+ }
+
+ _Istr.setstate(_State);
+ }
+ return (_Istr);
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
+
+
+#pragma warning(pop)
+#pragma pack(pop)
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma pack(push,8)
+#pragma warning(push,3)
+
+ #pragma warning(disable: 4189)
+
+
+namespace std {
+
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc> inline
+ basic_string<_Elem, _Traits, _Alloc> __cdecl operator+(
+ const basic_string<_Elem, _Traits, _Alloc>& _Left,
+ const basic_string<_Elem, _Traits, _Alloc>& _Right)
+ {
+ return (basic_string<_Elem, _Traits, _Alloc>(_Left) += _Right);
+ }
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc> inline
+ basic_string<_Elem, _Traits, _Alloc> __cdecl operator+(
+ const _Elem *_Left,
+ const basic_string<_Elem, _Traits, _Alloc>& _Right)
+ {
+ return (basic_string<_Elem, _Traits, _Alloc>(_Left) += _Right);
+ }
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc> inline
+ basic_string<_Elem, _Traits, _Alloc> __cdecl operator+(
+ const _Elem _Left,
+ const basic_string<_Elem, _Traits, _Alloc>& _Right)
+ {
+ return (basic_string<_Elem, _Traits, _Alloc>(1, _Left) += _Right);
+ }
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc> inline
+ basic_string<_Elem, _Traits, _Alloc> __cdecl operator+(
+ const basic_string<_Elem, _Traits, _Alloc>& _Left,
+ const _Elem *_Right)
+ {
+ return (basic_string<_Elem, _Traits, _Alloc>(_Left) += _Right);
+ }
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc> inline
+ basic_string<_Elem, _Traits, _Alloc> __cdecl operator+(
+ const basic_string<_Elem, _Traits, _Alloc>& _Left,
+ const _Elem _Right)
+ {
+ return (basic_string<_Elem, _Traits, _Alloc>(_Left) += _Right);
+ }
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc> inline
+ bool __cdecl operator==(
+ const basic_string<_Elem, _Traits, _Alloc>& _Left,
+ const basic_string<_Elem, _Traits, _Alloc>& _Right)
+ {
+ return (_Left.compare(_Right) == 0);
+ }
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc> inline
+ bool __cdecl operator==(
+ const _Elem * _Left,
+ const basic_string<_Elem, _Traits, _Alloc>& _Right)
+ {
+ return (_Right.compare(_Left) == 0);
+ }
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc> inline
+ bool __cdecl operator==(
+ const basic_string<_Elem, _Traits, _Alloc>& _Left,
+ const _Elem *_Right)
+ {
+ return (_Left.compare(_Right) == 0);
+ }
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc> inline
+ bool __cdecl operator!=(
+ const basic_string<_Elem, _Traits, _Alloc>& _Left,
+ const basic_string<_Elem, _Traits, _Alloc>& _Right)
+ {
+ return (!(_Left == _Right));
+ }
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc> inline
+ bool __cdecl operator!=(
+ const _Elem *_Left,
+ const basic_string<_Elem, _Traits, _Alloc>& _Right)
+ {
+ return (!(_Left == _Right));
+ }
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc> inline
+ bool __cdecl operator!=(
+ const basic_string<_Elem, _Traits, _Alloc>& _Left,
+ const _Elem *_Right)
+ {
+ return (!(_Left == _Right));
+ }
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc> inline
+ bool __cdecl operator<(
+ const basic_string<_Elem, _Traits, _Alloc>& _Left,
+ const basic_string<_Elem, _Traits, _Alloc>& _Right)
+ {
+ return (_Left.compare(_Right) < 0);
+ }
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc> inline
+ bool __cdecl operator<(
+ const _Elem * _Left,
+ const basic_string<_Elem, _Traits, _Alloc>& _Right)
+ {
+ return (_Right.compare(_Left) > 0);
+ }
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc> inline
+ bool __cdecl operator<(
+ const basic_string<_Elem, _Traits, _Alloc>& _Left,
+ const _Elem *_Right)
+ {
+ return (_Left.compare(_Right) < 0);
+ }
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc> inline
+ bool __cdecl operator>(
+ const basic_string<_Elem, _Traits, _Alloc>& _Left,
+ const basic_string<_Elem, _Traits, _Alloc>& _Right)
+ {
+ return (_Right < _Left);
+ }
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc> inline
+ bool __cdecl operator>(
+ const _Elem * _Left,
+ const basic_string<_Elem, _Traits, _Alloc>& _Right)
+ {
+ return (_Right < _Left);
+ }
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc> inline
+ bool __cdecl operator>(
+ const basic_string<_Elem, _Traits, _Alloc>& _Left,
+ const _Elem *_Right)
+ {
+ return (_Right < _Left);
+ }
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc> inline
+ bool __cdecl operator<=(
+ const basic_string<_Elem, _Traits, _Alloc>& _Left,
+ const basic_string<_Elem, _Traits, _Alloc>& _Right)
+ {
+ return (!(_Right < _Left));
+ }
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc> inline
+ bool __cdecl operator<=(
+ const _Elem * _Left,
+ const basic_string<_Elem, _Traits, _Alloc>& _Right)
+ {
+ return (!(_Right < _Left));
+ }
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc> inline
+ bool __cdecl operator<=(
+ const basic_string<_Elem, _Traits, _Alloc>& _Left,
+ const _Elem *_Right)
+ {
+ return (!(_Right < _Left));
+ }
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc> inline
+ bool __cdecl operator>=(
+ const basic_string<_Elem, _Traits, _Alloc>& _Left,
+ const basic_string<_Elem, _Traits, _Alloc>& _Right)
+ {
+ return (!(_Left < _Right));
+ }
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc> inline
+ bool __cdecl operator>=(
+ const _Elem * _Left,
+ const basic_string<_Elem, _Traits, _Alloc>& _Right)
+ {
+ return (!(_Left < _Right));
+ }
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc> inline
+ bool __cdecl operator>=(
+ const basic_string<_Elem, _Traits, _Alloc>& _Left,
+ const _Elem *_Right)
+ {
+ return (!(_Left < _Right));
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc> inline
+ basic_istream<_Elem, _Traits>& __cdecl operator>>(
+ basic_istream<_Elem, _Traits>& _Istr,
+ basic_string<_Elem, _Traits, _Alloc>& _Str)
+ {
+ typedef ctype<_Elem> _Ctype;
+ typedef basic_istream<_Elem, _Traits> _Myis;
+ typedef basic_string<_Elem, _Traits, _Alloc> _Mystr;
+ typedef typename _Mystr::size_type _Mysizt;
+
+ ios_base::iostate _State = ios_base::goodbit;
+ bool _Changed = false;
+ const typename _Myis::sentry _Ok(_Istr);
+
+ if (_Ok)
+ {
+ const _Ctype& _Ctype_fac = use_facet<_Ctype >(_Istr.getloc());
+ _Str.erase();
+
+ try {
+ _Mysizt _Size = 0 < _Istr.width()
+ && (_Mysizt)_Istr.width() < _Str.max_size()
+ ? (_Mysizt)_Istr.width() : _Str.max_size();
+ typename _Traits::int_type _Meta = _Istr.rdbuf()->sgetc();
+
+ for (; 0 < _Size; --_Size, _Meta = _Istr.rdbuf()->snextc())
+ if(_Traits::eq_int_type(_Traits::eof(), _Meta))
+ {
+ _State |= ios_base::eofbit;
+ break;
+ }
+ else if (_Ctype_fac.is(_Ctype::space,
+ _Traits::to_char_type(_Meta)))
+ break;
+ else
+ {
+ _Str.append(1, _Traits::to_char_type(_Meta));
+ _Changed = true;
+ }
+ } catch (...) { (_Istr).setstate(ios_base::badbit, true); }
+ }
+
+ _Istr.width(0);
+ if (!_Changed)
+ _State |= ios_base::failbit;
+ _Istr.setstate(_State);
+ return (_Istr);
+ }
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc> inline
+ basic_istream<_Elem, _Traits>& __cdecl getline(
+ basic_istream<_Elem, _Traits>& _Istr,
+ basic_string<_Elem, _Traits, _Alloc>& _Str,
+ const _Elem _Delim)
+ {
+ typedef basic_istream<_Elem, _Traits> _Myis;
+ ios_base::iostate _State = ios_base::goodbit;
+ bool _Changed = false;
+ const typename _Myis::sentry _Ok(_Istr, true);
+
+ if (_Ok)
+ {
+ try {
+ _Str.erase();
+ const typename _Traits::int_type _Metadelim =
+ _Traits::to_int_type(_Delim);
+ typename _Traits::int_type _Meta = _Istr.rdbuf()->sgetc();
+
+ for (; ; _Meta = _Istr.rdbuf()->snextc())
+ if (_Traits::eq_int_type(_Traits::eof(), _Meta))
+ {
+ _State |= ios_base::eofbit;
+ break;
+ }
+ else if (_Traits::eq_int_type(_Meta, _Metadelim))
+ {
+ _Changed = true;
+ _Istr.rdbuf()->sbumpc();
+ break;
+ }
+ else if (_Str.max_size() <= _Str.size())
+ {
+ _State |= ios_base::failbit;
+ break;
+ }
+ else
+ {
+ _Str += _Traits::to_char_type(_Meta);
+ _Changed = true;
+ }
+ } catch (...) { (_Istr).setstate(ios_base::badbit, true); }
+ }
+
+ if (!_Changed)
+ _State |= ios_base::failbit;
+ _Istr.setstate(_State);
+ return (_Istr);
+ }
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc> inline
+ basic_istream<_Elem, _Traits>& __cdecl getline(
+ basic_istream<_Elem, _Traits>& _Istr,
+ basic_string<_Elem, _Traits, _Alloc>& _Str)
+ {
+ return (getline(_Istr, _Str, _Istr.widen('\n')));
+ }
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc> inline
+ basic_ostream<_Elem, _Traits>& __cdecl operator<<(
+ basic_ostream<_Elem, _Traits>& _Ostr,
+ const basic_string<_Elem, _Traits, _Alloc>& _Str)
+ {
+ typedef basic_ostream<_Elem, _Traits> _Myos;
+ typedef basic_string<_Elem, _Traits, _Alloc> _Mystr;
+ typedef typename _Mystr::size_type _Mysizt;
+
+ ios_base::iostate _State = ios_base::goodbit;
+ _Mysizt _Size = _Str.size();
+ _Mysizt _Pad = _Ostr.width() <= 0 || (_Mysizt)_Ostr.width() <= _Size
+ ? 0 : (_Mysizt)_Ostr.width() - _Size;
+ const typename _Myos::sentry _Ok(_Ostr);
+
+ if (!_Ok)
+ _State |= ios_base::badbit;
+ else
+ {
+ try {
+ if ((_Ostr.flags() & ios_base::adjustfield) != ios_base::left)
+ for (; 0 < _Pad; --_Pad)
+ if (_Traits::eq_int_type(_Traits::eof(),
+ _Ostr.rdbuf()->sputc(_Ostr.fill())))
+ {
+ _State |= ios_base::badbit;
+ break;
+ }
+
+ if (_State == ios_base::goodbit)
+ for (_Mysizt _Count = 0; _Count < _Size; ++_Count)
+ if (_Traits::eq_int_type(_Traits::eof(),
+ _Ostr.rdbuf()->sputc(_Str[_Count])))
+ {
+ _State |= ios_base::badbit;
+ break;
+ }
+
+ if (_State == ios_base::goodbit)
+ for (; 0 < _Pad; --_Pad)
+ if (_Traits::eq_int_type(_Traits::eof(),
+ _Ostr.rdbuf()->sputc(_Ostr.fill())))
+ {
+ _State |= ios_base::badbit;
+ break;
+ }
+ _Ostr.width(0);
+ } catch (...) { (_Ostr).setstate(ios_base::badbit, true); }
+ }
+
+ _Ostr.setstate(_State);
+ return (_Ostr);
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
+
+
+ #pragma warning(default: 4189)
+#pragma warning(pop)
+#pragma pack(pop)
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma pack(push,8)
+#pragma warning(push,3)
+
+
+namespace std {
+
+ #pragma warning(disable:4251)
+
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc>
+ class basic_stringbuf
+ : public basic_streambuf<_Elem, _Traits>
+ {
+public:
+ typedef _Alloc allocator_type;
+ typedef basic_streambuf<_Elem, _Traits> _Mysb;
+ typedef basic_string<_Elem, _Traits, _Alloc> _Mystr;
+
+ explicit basic_stringbuf(ios_base::openmode _Mode =
+ ios_base::in | ios_base::out)
+ {
+ _Init(0, 0, _Getstate(_Mode));
+ }
+
+ explicit basic_stringbuf(const _Mystr& _Str,
+ ios_base::openmode _Mode = ios_base::in | ios_base::out)
+ {
+ _Init(_Str.c_str(), _Str.size(), _Getstate(_Mode));
+ }
+
+ virtual ~basic_stringbuf()
+ {
+ _Tidy();
+ }
+
+ enum
+ {
+ _Allocated = 1,
+ _Constant = 2,
+ _Noread = 4,
+ _Append = 8,
+ _Atend = 16};
+ typedef int _Strstate;
+
+ typedef typename _Traits::int_type int_type;
+ typedef typename _Traits::pos_type pos_type;
+ typedef typename _Traits::off_type off_type;
+
+ _Mystr str() const
+ {
+ if (!(_Mystate & _Constant) && _Mysb::pptr() != 0)
+ {
+ _Mystr _Str(_Mysb::pbase(), (_Seekhigh < _Mysb::pptr()
+ ? _Mysb::pptr() : _Seekhigh) - _Mysb::pbase());
+ return (_Str);
+ }
+ else if (!(_Mystate & _Noread) && _Mysb::gptr() != 0)
+ {
+ _Mystr _Str(_Mysb::eback(), _Mysb::egptr() - _Mysb::eback());
+ return (_Str);
+ }
+ else
+ {
+ _Mystr _Nul;
+ return (_Nul);
+ }
+ }
+
+ void str(const _Mystr& _Newstr)
+ {
+ _Tidy();
+ _Init(_Newstr.c_str(), _Newstr.size(), _Mystate);
+ }
+
+protected:
+ virtual int_type overflow(int_type _Meta = _Traits::eof())
+ {
+ if (_Mystate & _Append
+ && _Mysb::pptr() != 0 && _Mysb::pptr() < _Seekhigh)
+ _Mysb::setp(_Mysb::pbase(), _Seekhigh, _Mysb::epptr());
+
+ if (_Traits::eq_int_type(_Traits::eof(), _Meta))
+ return (_Traits::not_eof(_Meta));
+ else if (_Mysb::pptr() != 0
+ && _Mysb::pptr() < _Mysb::epptr())
+ {
+ *_Mysb::_Pninc() = _Traits::to_char_type(_Meta);
+ return (_Meta);
+ }
+ else if (_Mystate & _Constant)
+ return (_Traits::eof());
+ else
+ {
+ size_t _Oldsize = _Mysb::pptr() == 0
+ ? 0 : _Mysb::epptr() - _Mysb::eback();
+ size_t _Newsize = _Oldsize;
+ size_t _Inc = _Newsize / 2 < _MINSIZE
+ ? _MINSIZE : _Newsize / 2;
+ _Elem *_Ptr = 0;
+
+ while (0 < _Inc && 2147483647 - _Inc < _Newsize)
+ _Inc /= 2;
+ if (0 < _Inc)
+ {
+ _Newsize += _Inc;
+ _Ptr = _Al.allocate(_Newsize);
+ }
+
+ if (0 < _Oldsize)
+ _Traits_helper::copy_s<_Traits>(_Ptr, _Newsize, _Mysb::eback(), _Oldsize);
+ if (_Mystate & _Allocated)
+ _Al.deallocate(_Mysb::eback(), _Oldsize);
+ _Mystate |= _Allocated;
+
+ if (_Oldsize == 0)
+ {
+ _Seekhigh = _Ptr;
+ _Mysb::setp(_Ptr, _Ptr + _Newsize);
+ if (_Mystate & _Noread)
+ _Mysb::setg(_Ptr, 0, _Ptr);
+ else
+ _Mysb::setg(_Ptr, _Ptr, _Ptr + 1);
+ }
+ else
+ {
+ _Seekhigh = _Seekhigh - _Mysb::eback() + _Ptr;
+ _Mysb::setp(_Mysb::pbase() - _Mysb::eback() + _Ptr,
+ _Mysb::pptr() - _Mysb::eback() + _Ptr, _Ptr + _Newsize);
+ if (_Mystate & _Noread)
+ _Mysb::setg(_Ptr, 0, _Ptr);
+ else
+ _Mysb::setg(_Ptr,
+ _Mysb::gptr() - _Mysb::eback() + _Ptr,
+ _Mysb::pptr() + 1);
+ }
+
+ *_Mysb::_Pninc() = _Traits::to_char_type(_Meta);
+ return (_Meta);
+ }
+ }
+
+ virtual int_type pbackfail(int_type _Meta = _Traits::eof())
+ {
+ if (_Mysb::gptr() == 0
+ || _Mysb::gptr() <= _Mysb::eback()
+ || !_Traits::eq_int_type(_Traits::eof(), _Meta)
+ && !_Traits::eq(_Traits::to_char_type(_Meta), _Mysb::gptr()[-1])
+ && _Mystate & _Constant)
+ return (_Traits::eof());
+ else
+ {
+ _Mysb::gbump(-1);
+ if (!_Traits::eq_int_type(_Traits::eof(), _Meta))
+ *_Mysb::gptr() = _Traits::to_char_type(_Meta);
+ return (_Traits::not_eof(_Meta));
+ }
+ }
+
+ virtual int_type underflow()
+ {
+ if (_Mysb::gptr() == 0)
+ return (_Traits::eof());
+ else if (_Mysb::gptr() < _Mysb::egptr())
+ return (_Traits::to_int_type(*_Mysb::gptr()));
+ else if (_Mystate & _Noread || _Mysb::pptr() == 0
+ || _Mysb::pptr() <= _Mysb::gptr() && _Seekhigh <= _Mysb::gptr())
+ return (_Traits::eof());
+ else
+ {
+ if (_Seekhigh < _Mysb::pptr())
+ _Seekhigh = _Mysb::pptr();
+ _Mysb::setg(_Mysb::eback(), _Mysb::gptr(), _Seekhigh);
+ return (_Traits::to_int_type(*_Mysb::gptr()));
+ }
+ }
+
+ virtual pos_type seekoff(off_type _Off,
+ ios_base::seekdir _Way,
+ ios_base::openmode _Which = ios_base::in | ios_base::out)
+ {
+ if (_Mysb::pptr() != 0 && _Seekhigh < _Mysb::pptr())
+ _Seekhigh = _Mysb::pptr();
+
+ if (_Which & ios_base::in && _Mysb::gptr() != 0)
+ {
+ if (_Way == ios_base::end)
+ _Off += (off_type)(_Seekhigh - _Mysb::eback());
+ else if (_Way == ios_base::cur
+ && (_Which & ios_base::out) == 0)
+ _Off += (off_type)(_Mysb::gptr() - _Mysb::eback());
+ else if (_Way != ios_base::beg)
+ _Off = _BADOFF;
+
+ if (0 <= _Off && _Off <= _Seekhigh - _Mysb::eback())
+ {
+ _Mysb::gbump((int)(_Mysb::eback() - _Mysb::gptr() + _Off));
+ if (_Which & ios_base::out && _Mysb::pptr() != 0)
+ _Mysb::setp(_Mysb::pbase(), _Mysb::gptr(),
+ _Mysb::epptr());
+ }
+ else
+ _Off = _BADOFF;
+ }
+ else if (_Which & ios_base::out && _Mysb::pptr() != 0)
+ {
+ if (_Way == ios_base::end)
+ _Off += (off_type)(_Seekhigh - _Mysb::eback());
+ else if (_Way == ios_base::cur)
+ _Off += (off_type)(_Mysb::pptr() - _Mysb::eback());
+ else if (_Way != ios_base::beg)
+ _Off = _BADOFF;
+
+ if (0 <= _Off && _Off <= _Seekhigh - _Mysb::eback())
+ _Mysb::pbump((int)(_Mysb::eback()
+ - _Mysb::pptr() + _Off));
+ else
+ _Off = _BADOFF;
+ }
+ else
+ _Off = _BADOFF;
+ return (pos_type(_Off));
+ }
+
+ virtual pos_type seekpos(pos_type _Ptr,
+ ios_base::openmode _Mode = ios_base::in | ios_base::out)
+ {
+ streamoff _Off = (streamoff)_Ptr;
+ if (_Mysb::pptr() != 0 && _Seekhigh < _Mysb::pptr())
+ _Seekhigh = _Mysb::pptr();
+
+ if (_Off == _BADOFF)
+ ;
+ else if (_Mode & ios_base::in && _Mysb::gptr() != 0)
+ {
+ if (0 <= _Off && _Off <= _Seekhigh - _Mysb::eback())
+ {
+ _Mysb::gbump((int)(_Mysb::eback() - _Mysb::gptr() + _Off));
+ if (_Mode & ios_base::out && _Mysb::pptr() != 0)
+ _Mysb::setp(_Mysb::pbase(), _Mysb::gptr(),
+ _Mysb::epptr());
+ }
+ else
+ _Off = _BADOFF;
+ }
+ else if (_Mode & ios_base::out && _Mysb::pptr() != 0)
+ {
+ if (0 <= _Off && _Off <= _Seekhigh - _Mysb::eback())
+ _Mysb::pbump((int)(_Mysb::eback()
+ - _Mysb::pptr() + _Off));
+ else
+ _Off = _BADOFF;
+ }
+ else
+ _Off = _BADOFF;
+ return (streampos(_Off));
+ }
+
+ void _Init(const _Elem *_Ptr,
+ size_t _Count, _Strstate _State)
+ {
+ _Seekhigh = 0;
+ _Mystate = _State;
+
+ if (_Count != 0
+ && (_Mystate & (_Noread | _Constant)) != (_Noread | _Constant))
+ {
+ _Elem *_Pnew = _Al.allocate(_Count);
+ _Traits_helper::copy_s<_Traits>(_Pnew, _Count, _Ptr, _Count);
+ _Seekhigh = _Pnew + _Count;
+
+ if (!(_Mystate & _Noread))
+ _Mysb::setg(_Pnew, _Pnew,
+ _Pnew + _Count);
+ if (!(_Mystate & _Constant))
+ {
+ _Mysb::setp(_Pnew,
+ (_Mystate & _Atend) ? _Pnew + _Count : _Pnew,
+ _Pnew + _Count);
+ if (_Mysb::gptr() == 0)
+ _Mysb::setg(_Pnew, 0, _Pnew);
+ }
+ _Mystate |= _Allocated;
+ }
+ }
+
+ void _Tidy()
+ {
+ if (_Mystate & _Allocated)
+ _Al.deallocate(_Mysb::eback(),
+ (_Mysb::pptr() != 0 ? _Mysb::epptr()
+ : _Mysb::egptr()) - _Mysb::eback());
+ _Mysb::setg(0, 0, 0);
+ _Mysb::setp(0, 0);
+ _Seekhigh = 0;
+ _Mystate &= ~_Allocated;
+ }
+
+private:
+ enum
+ {
+ _MINSIZE = 32};
+
+ _Strstate _Getstate(ios_base::openmode _Mode)
+ {
+ _Strstate _State = (_Strstate)0;
+ if (!(_Mode & ios_base::in))
+ _State |= _Noread;
+ if (!(_Mode & ios_base::out))
+ _State |= _Constant;
+ if (_Mode & ios_base::app)
+ _State |= _Append;
+ if (_Mode & ios_base::ate)
+ _State |= _Atend;
+ return (_State);
+ }
+
+ _Elem *_Seekhigh;
+ _Strstate _Mystate;
+ allocator_type _Al;
+ };
+
+
+
+
+
+
+
+
+
+
+
+
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc>
+ class basic_istringstream
+ : public basic_istream<_Elem, _Traits>
+ {
+public:
+ typedef _Alloc allocator_type;
+ typedef basic_stringbuf<_Elem, _Traits, _Alloc> _Mysb;
+ typedef basic_string<_Elem, _Traits, _Alloc> _Mystr;
+
+ explicit basic_istringstream(ios_base::openmode _Mode = ios_base::in)
+ : basic_istream<_Elem, _Traits>(&_Stringbuffer),
+ _Stringbuffer(_Mode | ios_base::in)
+ {
+ }
+
+ explicit basic_istringstream(const _Mystr& _Str,
+ ios_base::openmode _Mode = ios_base::in)
+ : basic_istream<_Elem, _Traits>(&_Stringbuffer),
+ _Stringbuffer(_Str, _Mode | ios_base::in)
+ {
+ }
+
+ virtual ~basic_istringstream()
+ {
+ }
+
+ _Mysb * rdbuf() const
+ {
+ return ((_Mysb *)&_Stringbuffer);
+ }
+
+ _Mystr str() const
+ {
+ return (_Stringbuffer.str());
+ }
+
+ void str(const _Mystr& _Newstr)
+ {
+ _Stringbuffer.str(_Newstr);
+ }
+
+private:
+ _Mysb _Stringbuffer;
+ };
+
+
+
+
+
+
+
+
+
+
+
+
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc>
+ class basic_ostringstream
+ : public basic_ostream<_Elem, _Traits>
+ {
+public:
+ typedef _Alloc allocator_type;
+ typedef basic_stringbuf<_Elem, _Traits, _Alloc> _Mysb;
+ typedef basic_string<_Elem, _Traits, _Alloc> _Mystr;
+
+ explicit basic_ostringstream(ios_base::openmode _Mode = ios_base::out)
+ : basic_ostream<_Elem, _Traits>(&_Stringbuffer),
+ _Stringbuffer(_Mode | ios_base::out)
+ {
+ }
+
+ explicit basic_ostringstream(const _Mystr& _Str,
+ ios_base::openmode _Mode = ios_base::out)
+ : basic_ostream<_Elem, _Traits>(&_Stringbuffer),
+ _Stringbuffer(_Str, _Mode | ios_base::out)
+ {
+ }
+
+ virtual ~basic_ostringstream()
+ {
+ }
+
+ _Mysb * rdbuf() const
+ {
+ return ((_Mysb *)&_Stringbuffer);
+ }
+
+ _Mystr str() const
+ {
+ return (_Stringbuffer.str());
+ }
+
+ void str(const _Mystr& _Newstr)
+ {
+ _Stringbuffer.str(_Newstr);
+ }
+
+private:
+ _Mysb _Stringbuffer;
+ };
+
+
+
+
+
+
+
+
+
+
+
+
+
+template<class _Elem,
+ class _Traits,
+ class _Alloc>
+ class basic_stringstream
+ : public basic_iostream<_Elem, _Traits>
+ {
+public:
+ typedef _Elem char_type;
+ typedef _Traits traits_type;
+ typedef _Alloc allocator_type;
+ typedef typename _Traits::int_type int_type;
+ typedef typename _Traits::pos_type pos_type;
+ typedef typename _Traits::off_type off_type;
+ typedef basic_string<_Elem, _Traits, _Alloc> _Mystr;
+
+ explicit basic_stringstream(ios_base::openmode _Mode =
+ ios_base::in | ios_base::out)
+ : basic_iostream<_Elem, _Traits>(&_Stringbuffer),
+ _Stringbuffer(_Mode)
+ {
+ }
+
+ explicit basic_stringstream(const _Mystr& _Str,
+ ios_base::openmode _Mode = ios_base::in | ios_base::out)
+ : basic_iostream<_Elem, _Traits>(&_Stringbuffer),
+ _Stringbuffer(_Str, _Mode)
+ {
+ }
+
+ virtual ~basic_stringstream()
+ {
+ }
+
+ basic_stringbuf<_Elem, _Traits, _Alloc> * rdbuf() const
+ {
+ return ((basic_stringbuf<_Elem, _Traits, _Alloc> *)&_Stringbuffer);
+ }
+
+ _Mystr str() const
+ {
+ return (_Stringbuffer.str());
+ }
+
+ void str(const _Mystr& _Newstr)
+ {
+ _Stringbuffer.str(_Newstr);
+ }
+
+private:
+ basic_stringbuf<_Elem, _Traits, _Alloc>
+ _Stringbuffer;
+ };
+
+
+
+
+
+
+
+
+
+
+
+}
+
+
+#pragma warning(pop)
+#pragma pack(pop)
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma pack(push,8)
+#pragma warning(push,3)
+
+ #pragma warning(disable: 4244)
+
+
+typedef struct _C_double_complex
+ {
+ double _Val[2];
+ } _C_double_complex;
+
+typedef struct _C_float_complex
+ {
+ float _Val[2];
+ } _C_float_complex;
+
+typedef struct _C_ldouble_complex
+ {
+ long double _Val[2];
+ } _C_ldouble_complex;
+
+
+
+
+
+namespace std {
+typedef ::_C_double_complex _Dcomplex_value;
+typedef ::_C_float_complex _Fcomplex_value;
+typedef ::_C_ldouble_complex _Lcomplex_value;
+
+
+
+
+template<class _Ty>
+ class _Ctraits
+ {
+public:
+ static _Ty __cdecl _Cosh(_Ty _Left, _Ty _Right)
+ {
+ return (::_Cosh((double)_Left, (double)_Right));
+ }
+
+ static short __cdecl _Exp(_Ty *_Pleft, _Ty _Right, short _Exponent)
+ {
+ double _Tmp = (double)*_Pleft;
+ short _Ans = ::_Exp(&_Tmp, (double)_Right, _Exponent);
+ *_Pleft = (_Ty)_Tmp;
+ return (_Ans);
+ }
+
+ static _Ty __cdecl _Infv(_Ty)
+ {
+ return (::_Inf._Double);
+ }
+
+ static bool __cdecl _Isinf(_Ty _Left)
+ {
+ double _Tmp = (double)_Left;
+ return (::_Dtest(&_Tmp) == 1);
+ }
+
+ static bool __cdecl _Isnan(_Ty _Left)
+ {
+ double _Tmp = (double)_Left;
+ return (::_Dtest(&_Tmp) == 2);
+ }
+
+ static _Ty __cdecl _Nanv(_Ty)
+ {
+ return (::_Nan._Double);
+ }
+
+ static _Ty __cdecl _Sinh(_Ty _Left, _Ty _Right)
+ {
+ return (::_Sinh((double)_Left, (double)_Right));
+ }
+
+ static _Ty __cdecl atan2(_Ty _Yval, _Ty _Xval)
+ {
+ return (::atan2((double)_Yval, (double)_Xval));
+ }
+
+ static _Ty __cdecl cos(_Ty _Left)
+ {
+ return (::cos((double)_Left));
+ }
+
+ static _Ty __cdecl exp(_Ty _Left)
+ {
+ return (::exp((double)_Left));
+ }
+
+ static _Ty __cdecl ldexp(_Ty _Left, int _Exponent)
+ {
+ return (::ldexp((double)_Left, _Exponent));
+ }
+
+ static _Ty __cdecl log(_Ty _Left)
+ {
+ return (::log((double)_Left));
+ }
+
+ static _Ty __cdecl pow(_Ty _Left, _Ty _Right)
+ {
+ return (::pow((double)_Left, (double)_Right));
+ }
+
+ static _Ty __cdecl sin(_Ty _Left)
+ {
+ return (::sin((double)_Left));
+ }
+
+ static _Ty __cdecl sqrt(_Ty _Left)
+ {
+ return (::sqrt((double)_Left));
+ }
+
+ static _Ty __cdecl tan(_Ty _Left)
+ {
+ return (::tan((double)_Left));
+ }
+ };
+
+
+template<> class _Ctraits<long double>
+ {
+public:
+ typedef long double _Ty;
+
+ static _Ty __cdecl _Cosh(_Ty _Left, _Ty _Right)
+ {
+ return (::_LCosh(_Left, _Right));
+ }
+
+ static short __cdecl _Exp(_Ty *_Pleft, _Ty _Right, short _Exponent)
+ {
+ return (::_LExp(_Pleft, _Right, _Exponent));
+ }
+
+ static _Ty __cdecl _Infv(_Ty)
+ {
+ return (::_LInf._Long_double);
+ }
+
+ static bool __cdecl _Isinf(_Ty _Left)
+ {
+ return (::_LDtest(&_Left) == 1);
+ }
+
+ static bool __cdecl _Isnan(_Ty _Left)
+ {
+ return (::_LDtest(&_Left) == 2);
+ }
+
+ static _Ty __cdecl _Nanv(_Ty)
+ {
+ return (::_LNan._Long_double);
+ }
+
+ static _Ty __cdecl _Sinh(_Ty _Left, _Ty _Right)
+ {
+ return (::_LSinh(_Left, _Right));
+ }
+
+ static _Ty __cdecl atan2(_Ty _Yval, _Ty _Xval)
+ {
+ return (::atan2l(_Yval, _Xval));
+ }
+
+ static _Ty __cdecl cos(_Ty _Left)
+ {
+ return (::cosl(_Left));
+ }
+
+ static _Ty __cdecl exp(_Ty _Left)
+ {
+ return (::expl(_Left));
+ }
+
+ static _Ty __cdecl ldexp(_Ty _Left, int _Exponent)
+ {
+ return (::ldexpl(_Left, _Exponent));
+ }
+
+ static _Ty __cdecl log(_Ty _Left)
+ {
+ return (::logl(_Left));
+ }
+
+ static _Ty __cdecl pow(_Ty _Left, _Ty _Right)
+ {
+ return (::powl(_Left, _Right));
+ }
+
+ static _Ty __cdecl sin(_Ty _Left)
+ {
+ return (::sinl(_Left));
+ }
+
+ static _Ty __cdecl sqrt(_Ty _Left)
+ {
+ return (::sqrtl(_Left));
+ }
+
+ static _Ty __cdecl tan(_Ty _Left)
+ {
+ return (::tanl(_Left));
+ }
+ };
+
+
+template<> class _Ctraits<double>
+ {
+public:
+ typedef double _Ty;
+
+ static _Ty __cdecl _Cosh(_Ty _Left, _Ty _Right)
+ {
+ return (::_Cosh(_Left, _Right));
+ }
+
+ static short __cdecl _Exp(_Ty *_Pleft, _Ty _Right, short _Exponent)
+ {
+ return (::_Exp(_Pleft, _Right, _Exponent));
+ }
+
+ static _Ty __cdecl _Infv(_Ty)
+ {
+ return (::_Inf._Double);
+ }
+
+ static bool __cdecl _Isinf(_Ty _Left)
+ {
+ return (::_Dtest(&_Left) == 1);
+ }
+
+ static bool __cdecl _Isnan(_Ty _Left)
+ {
+ return (::_Dtest(&_Left) == 2);
+ }
+
+ static _Ty __cdecl _Nanv(_Ty)
+ {
+ return (::_Nan._Double);
+ }
+
+ static _Ty __cdecl _Sinh(_Ty _Left, _Ty _Right)
+ {
+ return (::_Sinh(_Left, _Right));
+ }
+
+ static _Ty __cdecl atan2(_Ty _Yval, _Ty _Xval)
+ {
+ return (::atan2(_Yval, _Xval));
+ }
+
+ static _Ty __cdecl cos(_Ty _Left)
+ {
+ return (::cos(_Left));
+ }
+
+ static _Ty __cdecl exp(_Ty _Left)
+ {
+ return (::exp(_Left));
+ }
+
+ static _Ty __cdecl ldexp(_Ty _Left, int _Exponent)
+ {
+ return (::ldexp(_Left, _Exponent));
+ }
+
+ static _Ty __cdecl log(_Ty _Left)
+ {
+ return (::log(_Left));
+ }
+
+ static _Ty __cdecl pow(_Ty _Left, _Ty _Right)
+ {
+ return (::pow(_Left, _Right));
+ }
+
+ static _Ty __cdecl sin(_Ty _Left)
+ {
+ return (::sin(_Left));
+ }
+
+ static _Ty __cdecl sqrt(_Ty _Left)
+ {
+ return (::sqrt(_Left));
+ }
+
+ static _Ty __cdecl tan(_Ty _Left)
+ {
+ return (::tan(_Left));
+ }
+ };
+
+
+template<> class _Ctraits<float>
+ {
+public:
+ typedef float _Ty;
+
+ static _Ty __cdecl _Cosh(_Ty _Left, _Ty _Right)
+ {
+ return (::_FCosh(_Left, _Right));
+ }
+
+ static short __cdecl _Exp(_Ty *_Pleft, _Ty _Right, short _Exponent)
+ {
+ return (::_FExp(_Pleft, _Right, _Exponent));
+ }
+
+ static _Ty __cdecl _Infv(_Ty)
+ {
+ return (::_FInf._Float);
+ }
+
+ static bool __cdecl _Isinf(_Ty _Left)
+ {
+ return (::_FDtest(&_Left) == 1);
+ }
+
+ static bool __cdecl _Isnan(_Ty _Left)
+ {
+ return (::_FDtest(&_Left) == 2);
+ }
+
+ static _Ty __cdecl _Nanv(_Ty)
+ {
+ return (::_FNan._Float);
+ }
+
+ static _Ty __cdecl _Sinh(_Ty _Left, _Ty _Right)
+ {
+ return (::_FSinh(_Left, _Right));
+ }
+
+ static _Ty __cdecl atan2(_Ty _Yval, _Ty _Xval)
+ {
+ return (::atan2f(_Yval, _Xval));
+ }
+
+ static _Ty __cdecl cos(_Ty _Left)
+ {
+ return (::cosf(_Left));
+ }
+
+ static _Ty __cdecl exp(_Ty _Left)
+ {
+ return (::expf(_Left));
+ }
+
+ static _Ty __cdecl ldexp(_Ty _Left, int _Exponent)
+ {
+ return (::ldexpf(_Left, _Exponent));
+ }
+
+ static _Ty __cdecl log(_Ty _Left)
+ {
+ return (::logf(_Left));
+ }
+
+ static _Ty __cdecl pow(_Ty _Left, _Ty _Right)
+ {
+ return (::powf(_Left, _Right));
+ }
+
+ static _Ty __cdecl sin(_Ty _Left)
+ {
+ return (::sinf(_Left));
+ }
+
+ static _Ty __cdecl sqrt(_Ty _Left)
+ {
+ return (::sqrtf(_Left));
+ }
+
+ static _Ty __cdecl tan(_Ty _Left)
+ {
+ return (::tanf(_Left));
+ }
+ };
+
+template<class _Ty>
+ class complex;
+template<> class complex<float>;
+template<> class complex<double>;
+template<> class complex<long double>;
+
+
+template<class _Ty>
+ struct _Complex_value
+ {
+ enum {_Re = 0, _Im = 1};
+ _Ty _Val[2];
+ };
+
+
+template<class _Ty,
+ class _Valbase>
+ class _Complex_base
+ : public _Valbase
+ {
+public:
+ typedef _Ctraits<_Ty> _Myctraits;
+ typedef _Complex_base<_Ty, _Valbase> _Myt;
+ typedef _Ty value_type;
+
+ _Complex_base(const _Ty& _Realval, const _Ty& _Imagval)
+ {
+ this->_Val[0] = _Realval;
+ this->_Val[1] = _Imagval;
+ }
+
+ _Ty real(const _Ty& _Right)
+ {
+ return (this->_Val[0] = _Right);
+ }
+
+ _Ty imag(const _Ty& _Right)
+ {
+ return (this->_Val[1] = _Right);
+ }
+
+ _Ty real() const
+ {
+ return (this->_Val[0]);
+ }
+
+ _Ty imag() const
+ {
+ return (this->_Val[1]);
+ }
+
+protected:
+ template<class _Other> inline
+ void _Add(const complex<_Other>& _Right)
+ {
+ this->_Val[0] = this->_Val[0] + (_Ty)_Right.real();
+ this->_Val[1] = this->_Val[1] + (_Ty)_Right.imag();
+ }
+
+ template<class _Other> inline
+ void _Sub(const complex<_Other>& _Right)
+ {
+ this->_Val[0] = this->_Val[0] - (_Ty)_Right.real();
+ this->_Val[1] = this->_Val[1] - (_Ty)_Right.imag();
+ }
+
+ template<class _Other> inline
+ void _Mul(const complex<_Other>& _Right)
+ {
+ _Ty _Rightreal = (_Ty)_Right.real();
+ _Ty _Rightimag = (_Ty)_Right.imag();
+
+ _Ty _Tmp = this->_Val[0] * _Rightreal
+ - this->_Val[1] * _Rightimag;
+ this->_Val[1] = this->_Val[0] * _Rightimag
+ + this->_Val[1] * _Rightreal;
+ this->_Val[0] = _Tmp;
+ }
+
+ template<class _Other> inline
+ void _Div(const complex<_Other>& _Right)
+ {
+ typedef _Ctraits<_Ty> _Myctraits;
+ _Ty _Rightreal = (_Ty)_Right.real();
+ _Ty _Rightimag = (_Ty)_Right.imag();
+
+ if (_Myctraits::_Isnan(_Rightreal) || _Myctraits::_Isnan(_Rightimag))
+ {
+ this->_Val[0] = _Myctraits::_Nanv(_Rightreal);
+ this->_Val[1] = this->_Val[0];
+ }
+ else if ((_Rightimag < 0 ? -_Rightimag : +_Rightimag)
+ < (_Rightreal < 0 ? -_Rightreal : +_Rightreal))
+ {
+ _Ty _Wr = _Rightimag / _Rightreal;
+ _Ty _Wd = _Rightreal + _Wr * _Rightimag;
+
+ if (_Myctraits::_Isnan(_Wd) || _Wd == 0)
+ {
+ this->_Val[0] = _Myctraits::_Nanv(_Rightreal);
+ this->_Val[1] = this->_Val[0];
+ }
+ else
+ {
+ _Ty _Tmp = (this->_Val[0]
+ + this->_Val[1] * _Wr) / _Wd;
+ this->_Val[1] = (this->_Val[1]
+ - this->_Val[0] * _Wr) / _Wd;
+ this->_Val[0] = _Tmp;
+ }
+ }
+ else if (_Rightimag == 0)
+ {
+ this->_Val[0] = _Myctraits::_Nanv(_Rightreal);
+ this->_Val[1] = this->_Val[0];
+ }
+ else
+ {
+ _Ty _Wr = _Rightreal / _Rightimag;
+ _Ty _Wd = _Rightimag + _Wr * _Rightreal;
+
+ if (_Myctraits::_Isnan(_Wd) || _Wd == 0)
+ {
+ this->_Val[0] = _Myctraits::_Nanv(_Rightreal);
+ this->_Val[1] = this->_Val[0];
+ }
+ else
+ {
+ _Ty _Tmp = (this->_Val[0] * _Wr + this->_Val[1]) / _Wd;
+ this->_Val[1] = (this->_Val[1] * _Wr
+ - this->_Val[0]) / _Wd;
+ this->_Val[0] = _Tmp;
+ }
+ }
+ }
+ };
+
+
+template<> class complex<float>
+ : public _Complex_base<float, _Fcomplex_value>
+ {
+public:
+ typedef float _Ty;
+ typedef complex<_Ty> _Myt;
+
+ explicit complex(const complex<double>&);
+
+ explicit complex(const complex<long double>&);
+
+ complex(const _Ty& _Realval = 0, const _Ty& _Imagval = 0)
+ : _Complex_base<float, _Fcomplex_value>(_Realval, _Imagval)
+ {
+ }
+
+ complex(const _Fcomplex_value& _Right)
+ : _Complex_base<float, _Fcomplex_value>(_Right._Val[0],
+ _Right._Val[1])
+ {
+ }
+
+ complex<_Ty>& operator=(const _Ty& _Right)
+ {
+ this->_Val[0] = _Right;
+ this->_Val[1] = 0;
+ return (*this);
+ }
+
+ _Myt& operator+=(const _Ty& _Right)
+ {
+ this->_Val[0] = _Val[0] + _Right;
+ return (*this);
+ }
+
+ _Myt& operator-=(const _Ty& _Right)
+ {
+ this->_Val[0] = _Val[0] - _Right;
+ return (*this);
+ }
+
+ _Myt& operator*=(const _Ty& _Right)
+ {
+ this->_Val[0] = _Val[0] * _Right;
+ this->_Val[1] = _Val[1] * _Right;
+ return (*this);
+ }
+
+ _Myt& operator/=(const _Ty& _Right)
+ {
+ this->_Val[0] = _Val[0] / _Right;
+ this->_Val[1] = _Val[1] / _Right;
+ return (*this);
+ }
+
+ _Myt& operator=(const _Myt& _Right)
+ {
+ this->_Val[0] = _Right.real();
+ this->_Val[1] = _Right.imag();
+ return (*this);
+ }
+
+ _Myt& operator+=(const _Myt& _Right)
+ {
+ this->_Add(_Right);
+ return (*this);
+ }
+
+ _Myt& operator-=(const _Myt& _Right)
+ {
+ this->_Sub(_Right);
+ return (*this);
+ }
+
+ _Myt& operator*=(const _Myt& _Right)
+ {
+ this->_Mul(_Right);
+ return (*this);
+ }
+
+ _Myt& operator/=(const _Myt& _Right)
+ {
+ this->_Div(_Right);
+ return (*this);
+ }
+
+ template<class _Other> inline
+ _Myt& operator=(const complex<_Other>& _Right)
+ {
+ _Val[0] = (_Ty)_Right._Val[0];
+ _Val[1] = (_Ty)_Right._Val[1];
+ return (*this);
+ }
+
+ template<class _Other> inline
+ _Myt& operator+=(const complex<_Other>& _Right)
+ {
+ this->_Add(_Right);
+ return (*this);
+ }
+
+ template<class _Other> inline
+ _Myt& operator-=(const complex<_Other>& _Right)
+ {
+ this->_Sub(_Right);
+ return (*this);
+ }
+
+ template<class _Other> inline
+ _Myt& operator*=(const complex<_Other>& _Right)
+ {
+ this->_Mul(_Right);
+ return (*this);
+ }
+
+ template<class _Other> inline
+ _Myt& operator/=(const complex<_Other>& _Right)
+ {
+ this->_Div(_Right);
+ return (*this);
+ }
+ };
+
+
+template<> class complex<double>
+ : public _Complex_base<double, _Dcomplex_value>
+ {
+public:
+ typedef double _Ty;
+ typedef complex<_Ty> _Myt;
+
+ complex(const complex<float>&);
+
+ explicit complex(const complex<long double>&);
+
+ complex(const _Ty& _Realval = 0, const _Ty& _Imagval = 0)
+ : _Complex_base<double, _Dcomplex_value>(_Realval, _Imagval)
+ {
+ }
+
+ complex(const _Dcomplex_value& _Right)
+ : _Complex_base<double, _Dcomplex_value>(_Right._Val[0],
+ _Right._Val[1])
+ {
+ }
+
+ complex<_Ty>& operator=(const _Ty& _Right)
+ {
+ this->_Val[0] = _Right;
+ this->_Val[1] = 0;
+ return (*this);
+ }
+
+ _Myt& operator+=(const _Ty& _Right)
+ {
+ this->_Val[0] = _Val[0] + _Right;
+ return (*this);
+ }
+
+ _Myt& operator-=(const _Ty& _Right)
+ {
+ this->_Val[0] = _Val[0] - _Right;
+ return (*this);
+ }
+
+ _Myt& operator*=(const _Ty& _Right)
+ {
+ this->_Val[0] = _Val[0] * _Right;
+ this->_Val[1] = _Val[1] * _Right;
+ return (*this);
+ }
+
+ _Myt& operator/=(const _Ty& _Right)
+ {
+ this->_Val[0] = _Val[0] / _Right;
+ this->_Val[1] = _Val[1] / _Right;
+ return (*this);
+ }
+
+ _Myt& operator=(const _Myt& _Right)
+ {
+ this->_Val[0] = _Right.real();
+ this->_Val[1] = _Right.imag();
+ return (*this);
+ }
+
+ _Myt& operator+=(const _Myt& _Right)
+ {
+ this->_Add(_Right);
+ return (*this);
+ }
+
+ _Myt& operator-=(const _Myt& _Right)
+ {
+ this->_Sub(_Right);
+ return (*this);
+ }
+
+ _Myt& operator*=(const _Myt& _Right)
+ {
+ this->_Mul(_Right);
+ return (*this);
+ }
+
+ _Myt& operator/=(const _Myt& _Right)
+ {
+ this->_Div(_Right);
+ return (*this);
+ }
+
+ template<class _Other> inline
+ _Myt& operator=(const complex<_Other>& _Right)
+ {
+ _Val[0] = (_Ty)_Right._Val[0];
+ _Val[1] = (_Ty)_Right._Val[1];
+ return (*this);
+ }
+
+ template<class _Other> inline
+ _Myt& operator+=(const complex<_Other>& _Right)
+ {
+ this->_Add(_Right);
+ return (*this);
+ }
+
+ template<class _Other> inline
+ _Myt& operator-=(const complex<_Other>& _Right)
+ {
+ this->_Sub(_Right);
+ return (*this);
+ }
+
+ template<class _Other> inline
+ _Myt& operator*=(const complex<_Other>& _Right)
+ {
+ this->_Mul(_Right);
+ return (*this);
+ }
+
+ template<class _Other> inline
+ _Myt& operator/=(const complex<_Other>& _Right)
+ {
+ this->_Div(_Right);
+ return (*this);
+ }
+ };
+
+
+template<> class complex<long double>
+ : public _Complex_base<long double, _Lcomplex_value>
+ {
+public:
+ typedef long double _Ty;
+ typedef complex<_Ty> _Myt;
+
+ complex(const complex<float>&);
+
+ complex(const complex<double>&);
+
+ complex(const _Ty& _Realval = 0, const _Ty& _Imagval = 0)
+ : _Complex_base<long double, _Lcomplex_value>(_Realval, _Imagval)
+ {
+ }
+
+ complex(const _Lcomplex_value& _Right)
+ : _Complex_base<long double, _Lcomplex_value>(_Right._Val[0],
+ _Right._Val[1])
+ {
+ }
+
+ complex<_Ty>& operator=(const _Ty& _Right)
+ {
+ this->_Val[0] = _Right;
+ this->_Val[1] = 0;
+ return (*this);
+ }
+
+ _Myt& operator+=(const _Ty& _Right)
+ {
+ this->_Val[0] = _Val[0] + _Right;
+ return (*this);
+ }
+
+ _Myt& operator-=(const _Ty& _Right)
+ {
+ this->_Val[0] = _Val[0] - _Right;
+ return (*this);
+ }
+
+ _Myt& operator*=(const _Ty& _Right)
+ {
+ this->_Val[0] = _Val[0] * _Right;
+ this->_Val[1] = _Val[1] * _Right;
+ return (*this);
+ }
+
+ _Myt& operator/=(const _Ty& _Right)
+ {
+ this->_Val[0] = _Val[0] / _Right;
+ this->_Val[1] = _Val[1] / _Right;
+ return (*this);
+ }
+
+ _Myt& operator=(const _Myt& _Right)
+ {
+ this->_Val[0] = _Right.real();
+ this->_Val[1] = _Right.imag();
+ return (*this);
+ }
+
+ _Myt& operator+=(const _Myt& _Right)
+ {
+ this->_Add(_Right);
+ return (*this);
+ }
+
+ _Myt& operator-=(const _Myt& _Right)
+ {
+ this->_Sub(_Right);
+ return (*this);
+ }
+
+ _Myt& operator*=(const _Myt& _Right)
+ {
+ this->_Mul(_Right);
+ return (*this);
+ }
+
+ _Myt& operator/=(const _Myt& _Right)
+ {
+ this->_Div(_Right);
+ return (*this);
+ }
+
+ template<class _Other> inline
+ _Myt& operator=(const complex<_Other>& _Right)
+ {
+ _Val[0] = (_Ty)_Right._Val[0];
+ _Val[1] = (_Ty)_Right._Val[1];
+ return (*this);
+ }
+
+ template<class _Other> inline
+ _Myt& operator+=(const complex<_Other>& _Right)
+ {
+ this->_Add(_Right);
+ return (*this);
+ }
+
+ template<class _Other> inline
+ _Myt& operator-=(const complex<_Other>& _Right)
+ {
+ this->_Sub(_Right);
+ return (*this);
+ }
+
+ template<class _Other> inline
+ _Myt& operator*=(const complex<_Other>& _Right)
+ {
+ this->_Mul(_Right);
+ return (*this);
+ }
+
+ template<class _Other> inline
+ _Myt& operator/=(const complex<_Other>& _Right)
+ {
+ this->_Div(_Right);
+ return (*this);
+ }
+ };
+
+
+inline
+ complex<float>::complex(const complex<double>& _Right)
+ : _Complex_base<float, _Fcomplex_value>(
+ (_Ty)_Right.real(), (_Ty)_Right.imag())
+ {
+ }
+
+inline
+ complex<float>::complex(const complex<long double>& _Right)
+ : _Complex_base<float, _Fcomplex_value>(
+ (_Ty)_Right.real(), (_Ty)_Right.imag())
+ {
+ }
+
+inline
+ complex<double>::complex(const complex<float>& _Right)
+ : _Complex_base<double, _Dcomplex_value>(
+ (_Ty)_Right.real(), (_Ty)_Right.imag())
+ {
+ }
+
+inline
+ complex<double>::complex(const complex<long double>& _Right)
+ : _Complex_base<double, _Dcomplex_value>(
+ (_Ty)_Right.real(), (_Ty)_Right.imag())
+ {
+ }
+
+inline
+ complex<long double>::complex(const complex<float>& _Right)
+ : _Complex_base<long double, _Lcomplex_value>(
+ (_Ty)_Right.real(), (_Ty)_Right.imag())
+ {
+ }
+
+inline
+ complex<long double>::complex(const complex<double>& _Right)
+ : _Complex_base<long double, _Lcomplex_value>(
+ (_Ty)_Right.real(), (_Ty)_Right.imag())
+ {
+ }
+
+
+template<class _Ty>
+ class complex
+ : public _Complex_base<_Ty, _Complex_value<_Ty> >
+ {
+public:
+ typedef complex<_Ty> _Myt;
+ typedef _Complex_base<_Ty, _Complex_value<_Ty> > _Mybase;
+
+ complex(const _Ty& _Realval = 0, const _Ty& _Imagval = 0)
+ : _Mybase(_Realval, _Imagval)
+ {
+ }
+
+ _Myt& operator=(const _Ty& _Right)
+ {
+ this->_Val[0] = _Right;
+ this->_Val[1] = 0;
+ return (*this);
+ }
+
+ template<class _Other>
+ complex(const complex<_Other>& _Right)
+ : _Mybase((_Ty)_Right.real(), (_Ty)_Right.imag())
+ {
+ }
+
+ template<class _Other>
+ _Myt& operator=(const complex<_Other>& _Right)
+ {
+ this->_Val[0] = (_Ty)_Right.real();
+ this->_Val[1] = (_Ty)_Right.imag();
+ return (*this);
+ }
+
+ _Myt& operator+=(const _Ty& _Right)
+ {
+ this->_Val[0] = this->_Val[0] + _Right;
+ return (*this);
+ }
+
+ _Myt& operator-=(const _Ty& _Right)
+ {
+ this->_Val[0] = this->_Val[0] - _Right;
+ return (*this);
+ }
+
+ _Myt& operator*=(const _Ty& _Right)
+ {
+ this->_Val[0] = this->_Val[0] * _Right;
+ this->_Val[1] = this->_Val[1] * _Right;
+ return (*this);
+ }
+
+ _Myt& operator/=(const _Ty& _Right)
+ {
+ this->_Val[0] = this->_Val[0] / _Right;
+ this->_Val[1] = this->_Val[1] / _Right;
+ return (*this);
+ }
+
+ _Myt& operator+=(const _Myt& _Right)
+ {
+ this->_Add(_Right);
+ return (*this);
+ }
+
+ _Myt& operator-=(const _Myt& _Right)
+ {
+ this->_Sub(_Right);
+ return (*this);
+ }
+
+ _Myt& operator*=(const _Myt& _Right)
+ {
+ this->_Mul(_Right);
+ return (*this);
+ }
+
+ _Myt& operator/=(const _Myt& _Right)
+ {
+ this->_Div(_Right);
+ return (*this);
+ }
+
+ template<class _Other> inline
+ _Myt& operator+=(const complex<_Other>& _Right)
+ {
+ this->_Add(_Right);
+ return (*this);
+ }
+
+ template<class _Other> inline
+ _Myt& operator-=(const complex<_Other>& _Right)
+ {
+ this->_Sub(_Right);
+ return (*this);
+ }
+
+ template<class _Other> inline
+ _Myt& operator*=(const complex<_Other>& _Right)
+ {
+ this->_Mul(_Right);
+ return (*this);
+ }
+
+ template<class _Other> inline
+ _Myt& operator/=(const complex<_Other>& _Right)
+ {
+ this->_Div(_Right);
+ return (*this);
+ }
+ };
+
+
+
+
+
+
+#pragma once
+
+
+
+
+
+template<class _Ty > inline
+ _Ty __cdecl imag(const complex<_Ty >& _Left)
+ {
+ return (_Left.imag());
+ }
+
+
+template<class _Ty > inline
+ _Ty __cdecl real(const complex<_Ty >& _Left)
+ {
+ return (_Left.real());
+ }
+
+
+template<class _Ty > inline
+ _Ty __cdecl _Fabs(const complex<_Ty >& _Left, int *_Pexp)
+ {
+ *_Pexp = 0;
+ _Ty _Av = real(_Left);
+ _Ty _Bv = imag(_Left);
+
+ if (_Ctraits<_Ty >::_Isinf(_Av) || _Ctraits<_Ty >::_Isinf(_Bv))
+ return (_Ctraits<_Ty >::_Infv(_Bv));
+ else if (_Ctraits<_Ty >::_Isnan(_Av))
+ return (_Av);
+ else if (_Ctraits<_Ty >::_Isnan(_Bv))
+ return (_Bv);
+ else
+ {
+ if (_Av < 0)
+ _Av = -_Av;
+ if (_Bv < 0)
+ _Bv = -_Bv;
+ if (_Av < _Bv)
+ {
+ _Ty _Tmp = _Av;
+ _Av = _Bv;
+ _Bv = _Tmp;
+ }
+
+ if (_Av == 0)
+ return (_Av);
+ if (1 <= _Av)
+ *_Pexp = 2, _Av = _Av * (_Ty)0.25, _Bv = _Bv * (_Ty)0.25;
+ else
+ *_Pexp = -2, _Av = _Av * 4, _Bv = _Bv * 4;
+
+ _Ty _Tmp = _Av - _Bv;
+ if (_Tmp == _Av)
+ return (_Av);
+ else if (_Bv < _Tmp)
+ {
+ const _Ty _Qv = _Av / _Bv;
+ return (_Av + _Bv / (_Qv + _Ctraits<_Ty >::sqrt(_Qv * _Qv + 1)));
+ }
+ else
+ {
+ static const _Ty _Root2 =
+ (_Ty)1.4142135623730950488016887242096981L;
+ static const _Ty _Oneplusroot2high =
+ (_Ty)(10125945.0 / 4194304.0);
+ static const _Ty _Oneplusroot2low =
+ (_Ty)1.4341252375973918872420969807856967e-7L;
+
+ const _Ty _Qv = _Tmp / _Bv;
+ const _Ty _Rv = (_Qv + 2) * _Qv;
+ const _Ty _Sv = _Rv / (_Root2 + _Ctraits<_Ty >::sqrt(_Rv + 2))
+ + _Oneplusroot2low + _Qv + _Oneplusroot2high;
+ return (_Av + _Bv / _Sv);
+ }
+ }
+ }
+
+
+template<class _Ty > inline
+ complex<_Ty > __cdecl operator+(const complex<_Ty >& _Left,
+ const complex<_Ty >& _Right)
+ {
+ complex<_Ty > _Tmp(_Left);
+ return (_Tmp += _Right);
+ }
+
+template<class _Ty > inline
+ complex<_Ty > __cdecl operator+(const complex<_Ty >& _Left,
+ const _Ty& _Right)
+ {
+ complex<_Ty > _Tmp(_Left);
+ _Tmp.real(_Tmp.real() + _Right);
+ return (_Tmp);
+ }
+
+template<class _Ty > inline
+ complex<_Ty > __cdecl operator+(const _Ty& _Left,
+ const complex<_Ty >& _Right)
+ {
+ complex<_Ty > _Tmp(_Left);
+ return (_Tmp += _Right);
+ }
+
+
+template<class _Ty > inline
+ complex<_Ty > __cdecl operator-(const complex<_Ty >& _Left,
+ const complex<_Ty >& _Right)
+ {
+ complex<_Ty > _Tmp(_Left);
+ return (_Tmp -= _Right);
+ }
+
+template<class _Ty > inline
+ complex<_Ty > __cdecl operator-(const complex<_Ty >& _Left,
+ const _Ty& _Right)
+ {
+ complex<_Ty > _Tmp(_Left);
+ _Tmp.real(_Tmp.real() - _Right);
+ return (_Tmp);
+ }
+
+template<class _Ty > inline
+ complex<_Ty > __cdecl operator-(const _Ty& _Left,
+ const complex<_Ty >& _Right)
+ {
+ complex<_Ty > _Tmp(_Left);
+ return (_Tmp -= _Right);
+ }
+
+
+template<class _Ty > inline
+ complex<_Ty > __cdecl operator*(const complex<_Ty >& _Left,
+ const complex<_Ty >& _Right)
+ {
+ complex<_Ty > _Tmp(_Left);
+ return (_Tmp *= _Right);
+ }
+
+template<class _Ty > inline
+ complex<_Ty > __cdecl operator*(const complex<_Ty >& _Left,
+ const _Ty& _Right)
+ {
+ complex<_Ty > _Tmp(_Left);
+ _Tmp.real(_Tmp.real() * _Right);
+ _Tmp.imag(_Tmp.imag() * _Right);
+ return (_Tmp);
+ }
+
+template<class _Ty > inline
+ complex<_Ty > __cdecl operator*(const _Ty& _Left,
+ const complex<_Ty >& _Right)
+ {
+ complex<_Ty > _Tmp(_Left);
+ return (_Tmp *= _Right);
+ }
+
+
+template<class _Ty > inline
+ complex<_Ty > __cdecl operator/(const complex<_Ty >& _Left,
+ const complex<_Ty >& _Right)
+ {
+ complex<_Ty > _Tmp(_Left);
+ return (_Tmp /= _Right);
+ }
+
+template<class _Ty > inline
+ complex<_Ty > __cdecl operator/(const complex<_Ty >& _Left,
+ const _Ty& _Right)
+ {
+ complex<_Ty > _Tmp(_Left);
+ _Tmp.real(_Tmp.real() / _Right);
+ _Tmp.imag(_Tmp.imag() / _Right);
+ return (_Tmp);
+ }
+
+template<class _Ty > inline
+ complex<_Ty > __cdecl operator/(const _Ty& _Left,
+ const complex<_Ty >& _Right)
+ {
+ complex<_Ty > _Tmp(_Left);
+ return (_Tmp /= _Right);
+ }
+
+
+template<class _Ty > inline
+ complex<_Ty > __cdecl operator+(const complex<_Ty >& _Left)
+ {
+ return (complex<_Ty >(_Left));
+ }
+
+
+template<class _Ty > inline
+ complex<_Ty > __cdecl operator-(const complex<_Ty >& _Left)
+ {
+ return (complex<_Ty >(-real(_Left), -imag(_Left)));
+ }
+
+
+template<class _Ty > inline
+ bool __cdecl operator==(const complex<_Ty >& _Left,
+ const complex<_Ty >& _Right)
+ {
+ return (real(_Left) == real(_Right) && imag(_Left) == imag(_Right));
+ }
+
+template<class _Ty > inline
+ bool __cdecl operator==(const complex<_Ty >& _Left,
+ const _Ty& _Right)
+ {
+ return (real(_Left) == _Right && imag(_Left) == 0);
+ }
+
+template<class _Ty > inline
+ bool __cdecl operator==(const _Ty& _Left,
+ const complex<_Ty >& _Right)
+ {
+ return (_Left == real(_Right) && 0 == imag(_Right));
+ }
+
+
+template<class _Ty > inline
+ bool __cdecl operator!=(const complex<_Ty >& _Left,
+ const complex<_Ty >& _Right)
+ {
+ return (!(_Left == _Right));
+ }
+
+template<class _Ty > inline
+ bool __cdecl operator!=(const complex<_Ty >& _Left,
+ const _Ty& _Right)
+ {
+ return (!(_Left == _Right));
+ }
+
+template<class _Ty > inline
+ bool __cdecl operator!=(const _Ty& _Left,
+ const complex<_Ty >& _Right)
+ {
+ return (!(_Left == _Right));
+ }
+
+
+template<class _Ty > inline
+ _Ty __cdecl abs(const complex<_Ty >& _Left)
+ {
+ int _Leftexp;
+ _Ty _Rho = _Fabs(_Left, &_Leftexp);
+
+ if (_Leftexp == 0)
+ return (_Rho);
+ else
+ return (_Ctraits<_Ty >::ldexp(_Rho, _Leftexp));
+ }
+
+
+template<class _Ty > inline
+ _Ty __cdecl arg(const complex<_Ty >& _Left)
+ {
+ return (_Ctraits<_Ty >::atan2(imag(_Left), real(_Left)));
+ }
+
+
+template<class _Ty > inline
+ complex<_Ty > __cdecl conj(const complex<_Ty >& _Left)
+ {
+ return (complex<_Ty >(real(_Left), -imag(_Left)));
+ }
+
+
+template<class _Ty > inline
+ complex<_Ty > __cdecl cos(const complex<_Ty >& _Left)
+ {
+ return (complex<_Ty >(
+ _Ctraits<_Ty >::_Cosh(imag(_Left), _Ctraits<_Ty >::cos(real(_Left))),
+ -_Ctraits<_Ty >::_Sinh(imag(_Left),
+ _Ctraits<_Ty >::sin(real(_Left)))));
+ }
+
+
+template<class _Ty > inline
+ complex<_Ty > __cdecl cosh(const complex<_Ty >& _Left)
+ {
+ return (complex<_Ty >(
+ _Ctraits<_Ty >::_Cosh(real(_Left), _Ctraits<_Ty >::cos(imag(_Left))),
+ _Ctraits<_Ty >::_Sinh(real(_Left), _Ctraits<_Ty >::sin(imag(_Left)))));
+ }
+
+
+template<class _Ty > inline
+ complex<_Ty > __cdecl exp(const complex<_Ty >& _Left)
+ {
+ _Ty _Real(real(_Left)), _Imag(real(_Left));
+ _Ctraits<_Ty >::_Exp(&_Real, _Ctraits<_Ty >::cos(imag(_Left)), 0);
+ _Ctraits<_Ty >::_Exp(&_Imag, _Ctraits<_Ty >::sin(imag(_Left)), 0);
+ return (complex<_Ty >(_Real, _Imag));
+ }
+
+
+template<class _Ty > inline
+ complex<_Ty > __cdecl log(const complex<_Ty >& _Left)
+ {
+ _Ty _Theta = _Ctraits<_Ty >::atan2(imag(_Left), real(_Left));
+
+ if (_Ctraits<_Ty >::_Isnan(_Theta))
+ return (complex<_Ty >(_Theta, _Theta));
+ else
+ {
+ static const _Ty _Cm = (_Ty)(22713.0L / 32768.0L);
+ static const _Ty _Cl =
+ (_Ty)1.4286068203094172321214581765680755e-6L;
+ int _Leftexp;
+ _Ty _Rho = _Fabs(_Left, &_Leftexp);
+
+ _Ty _Leftn = (_Ty)_Leftexp;
+ complex<_Ty > _Tmp(
+ _Rho == 0 ? -_Ctraits<_Ty >::_Infv(_Rho)
+ : _Ctraits<_Ty >::_Isinf(_Rho) ? _Rho
+ : _Ctraits<_Ty >::log(_Rho) + _Leftn * _Cl + _Leftn * _Cm,
+ _Theta);
+ return (_Tmp);
+ }
+ }
+
+
+template<class _Ty > inline
+ complex<_Ty > __cdecl log10(const complex<_Ty >& _Left)
+ {
+ return (log(_Left) * (_Ty)0.43429448190325182765112891891660508L);
+ }
+
+
+template<class _Ty > inline
+ _Ty __cdecl norm(const complex<_Ty >& _Left)
+ {
+ return (real(_Left) * real(_Left) + imag(_Left) * imag(_Left));
+ }
+
+
+template<class _Ty > inline
+ complex<_Ty > __cdecl polar(const _Ty& _Rho, const _Ty& _Theta)
+ {
+ return (complex<_Ty >(_Rho * _Ctraits<_Ty >::cos(_Theta),
+ _Rho * _Ctraits<_Ty >::sin(_Theta)));
+ }
+
+template<class _Ty > inline
+ complex<_Ty > __cdecl polar(const _Ty& _Rho)
+ {
+ return (complex<_Ty >(_Rho, (_Ty)0));
+ }
+
+
+template<class _Ty > inline
+ complex<_Ty > __cdecl pow(const complex<_Ty >& _Left, const _Ty& _Right)
+ {
+ if (imag(_Left) == 0 && 0 < real(_Left))
+ return (complex<_Ty >(_Ctraits<_Ty >::pow(real(_Left), _Right)));
+ else
+ return (exp(_Right * log(_Left)));
+ }
+
+template<class _Ty > inline
+ complex<_Ty > __cdecl pow(const complex<_Ty >& _Left, int _Right)
+ {
+ complex<_Ty > _Tmp = _Left;
+ unsigned int _Count = _Right;
+
+ if (_Right < 0)
+ _Count = 0 - _Count;
+
+ for (complex<_Ty > _Zv = complex<_Ty >(1); ; _Tmp *= _Tmp)
+ {
+ if ((_Count & 1) != 0)
+ _Zv *= _Tmp;
+ if ((_Count >>= 1) == 0)
+ return (_Right < 0 ? complex<_Ty >(1) / _Zv : _Zv);
+ }
+ }
+
+template<class _Ty > inline
+ complex<_Ty > __cdecl pow(const _Ty& _Left, const complex<_Ty >& _Right)
+ {
+ if (imag(_Right) == 0)
+ return (complex<_Ty >(_Ctraits<_Ty >::pow(_Left, real(_Right))));
+ else if (0 < _Left)
+ return (exp(_Right * _Ctraits<_Ty >::log(_Left)));
+ else
+ return (exp(_Right * log(complex<_Ty >(_Left))));
+ }
+
+template<class _Ty > inline
+ complex<_Ty > __cdecl pow(const complex<_Ty >& _Left,
+ const complex<_Ty >& _Right)
+ {
+ if (imag(_Right) == 0)
+ return (pow(_Left, real(_Right)));
+ else if (imag(_Left) == 0)
+ return (complex<_Ty >(pow(real(_Left), _Right)));
+ else
+ return (exp(_Right * log(_Left)));
+ }
+
+
+template<class _Ty > inline
+ complex<_Ty > __cdecl sin(const complex<_Ty >& _Left)
+ {
+ return (complex<_Ty >(
+ _Ctraits<_Ty >::_Cosh(imag(_Left), _Ctraits<_Ty >::sin(real(_Left))),
+ _Ctraits<_Ty >::_Sinh(imag(_Left), _Ctraits<_Ty >::cos(real(_Left)))));
+ }
+
+
+template<class _Ty > inline
+ complex<_Ty > __cdecl sinh(const complex<_Ty >& _Left)
+ {
+ return (complex<_Ty >(
+ _Ctraits<_Ty >::_Sinh(real(_Left), _Ctraits<_Ty >::cos(imag(_Left))),
+ _Ctraits<_Ty >::_Cosh(real(_Left), _Ctraits<_Ty >::sin(imag(_Left)))));
+ }
+
+
+template<class _Ty > inline
+ complex<_Ty > __cdecl sqrt(const complex<_Ty >& _Left)
+ {
+ int _Leftexp;
+ _Ty _Rho = _Fabs(_Left, &_Leftexp);
+
+ if (_Leftexp == 0)
+ return (complex<_Ty >(_Rho, _Rho));
+ else
+ {
+ _Ty _Realmag = _Ctraits<_Ty >::ldexp(real(_Left) < 0
+ ? - real(_Left) : real(_Left), -_Leftexp);
+ _Rho = _Ctraits<_Ty >::ldexp(_Ctraits<_Ty >::sqrt(
+ 2 * (_Realmag + _Rho)), _Leftexp / 2 - 1);
+
+ if (0 <= real(_Left))
+ return (complex<_Ty >(_Rho, imag(_Left) / (2 * _Rho)));
+ else if (imag(_Left) < 0)
+ return (complex<_Ty >(-imag(_Left) / (2 * _Rho), -_Rho));
+ else
+ return (complex<_Ty >(imag(_Left) / (2 * _Rho), _Rho));
+ }
+ }
+
+
+template<class _Ty > inline
+ complex<_Ty > __cdecl tanh(const complex<_Ty >& _Left)
+ {
+ _Ty _Tv = _Ctraits<_Ty >::tan(imag(_Left));
+ _Ty _Sv = _Ctraits<_Ty >::_Sinh(real(_Left), (_Ty)(1));
+ _Ty _Bv = _Sv *((_Ty)(1) + _Tv * _Tv);
+ _Ty _Dv = (_Ty)(1) + _Bv * _Sv;
+ return (complex<_Ty >((_Ctraits<_Ty >::sqrt((_Ty)(1) + _Sv * _Sv))
+ * _Bv / _Dv, _Tv / _Dv));
+ }
+
+
+template<class _Ty > inline
+ complex<_Ty > __cdecl tan(const complex<_Ty >& _Left)
+ {
+ complex<_Ty > _Zv(tanh(complex<_Ty >(-imag(_Left), real(_Left))));
+ return (complex<_Ty >(imag(_Zv), -real(_Zv)));
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+template<class _Ty,
+ class _Elem,
+ class _Tr> inline
+ basic_istream<_Elem, _Tr>& __cdecl operator>>(
+ basic_istream<_Elem, _Tr>& _Istr, complex<_Ty>& _Right)
+ {
+ typedef complex<_Ty> _Myt;
+ const ctype<_Elem>& _Ctype_fac = use_facet<ctype<_Elem> >(_Istr.getloc());
+ _Elem _Ch;
+ long double _Real, _Imag = 0;
+
+ if (_Istr >> _Ch && _Ch != _Ctype_fac.widen('('))
+ {
+ _Istr.putback(_Ch);
+ _Istr >> _Real;
+ _Imag = 0;
+ }
+ else if (_Istr >> _Real >> _Ch && _Ch != _Ctype_fac.widen(','))
+ if (_Ch == _Ctype_fac.widen(')'))
+ _Imag = 0;
+ else
+ {
+ _Istr.putback(_Ch);
+ _Istr.setstate(ios_base::failbit);
+ }
+ else if (_Istr >> _Imag >> _Ch && _Ch != _Ctype_fac.widen(')'))
+ {
+ _Istr.putback(_Ch);
+ _Istr.setstate(ios_base::failbit);
+ }
+
+ if (!_Istr.fail())
+ {
+ _Ty _Tyreal((_Ty)_Real), _Tyimag((_Ty)_Imag);
+ _Right = _Myt(_Tyreal, _Tyimag);
}
+ return (_Istr);
+ }
+
+
+template<class _Ty,
+ class _Elem,
+ class _Tr> inline
+ basic_ostream<_Elem, _Tr>& __cdecl operator<<(
+ basic_ostream<_Elem, _Tr>& _Ostr, const complex<_Ty>& _Right)
+ {
+ const ctype<_Elem>& _Ctype_fac = use_facet<ctype<_Elem> >(_Ostr.getloc());
+ basic_ostringstream<_Elem, _Tr, allocator<_Elem> > _Sstr;
+
+ _Sstr.flags(_Ostr.flags());
+ _Sstr.imbue(_Ostr.getloc());
+ _Sstr.precision(_Ostr.precision());
+ _Sstr << _Ctype_fac.widen('(') << real(_Right)
+ << _Ctype_fac.widen(',') << imag(_Right)
+ << _Ctype_fac.widen(')');
+
+ basic_string<_Elem, _Tr, allocator<_Elem> > _Str = _Sstr.str();
+ return (_Ostr << _Str.c_str());
+ }
+
+
+
+
+}
+
+
+ #pragma warning(default: 4244)
+
+#pragma warning(pop)
+#pragma pack(pop)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+namespace boost {
+namespace detail{
+
+struct is_convertible_from_tester
+{
+ template <class T>
+ is_convertible_from_tester(const std::complex<T>&);
+};
+
+}
+
+template< typename T > struct is_complex : ::boost::integral_constant<bool,(::boost::is_convertible<T, boost::detail::is_convertible_from_tester>::value)> { };
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+namespace boost {
+
+namespace detail {
+
+template <typename T>
+struct is_fundamental_impl
+ : ::boost::type_traits::ice_or<
+ ::boost::is_arithmetic<T>::value
+ , ::boost::is_void<T>::value
+ >
+{
+};
+
+}
+
+
+
+
+
+template< typename T > struct is_fundamental : ::boost::integral_constant<bool,::boost::detail::is_fundamental_impl<T>::value> { };
+
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+namespace boost {
+
+
+namespace detail {
+
+template <typename T>
+struct is_compound_impl
+{
+ static const bool value = (::boost::type_traits::ice_not< ::boost::is_fundamental<T>::value >::value);
+};
+
+}
+
+
+
+
+
+template< typename T > struct is_compound : ::boost::integral_constant<bool,::boost::detail::is_compound_impl<T>::value> { };
+
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+namespace boost {
+
+namespace detail {
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable:4624)
+
+
+template <typename T>
+struct empty_helper_t1 : public T
+{
+ empty_helper_t1();
+ int i[256];
+private:
+
+ empty_helper_t1(const empty_helper_t1&);
+ empty_helper_t1& operator=(const empty_helper_t1&);
+};
+
+
+#pragma warning(pop)
+
+
+struct empty_helper_t2 { int i[256]; };
+
+
+
+template <typename T, bool is_a_class = false>
+struct empty_helper
+{
+ static const bool value = false;
+};
+
+template <typename T>
+struct empty_helper<T, true>
+{
+ static const bool value = (sizeof(empty_helper_t1<T>) == sizeof(empty_helper_t2));
+};
+
+template <typename T>
+struct is_empty_impl
+{
+ typedef typename remove_cv<T>::type cvt;
+ static const bool value = ( ::boost::type_traits::ice_or< ::boost::detail::empty_helper<cvt,::boost::is_class<T>::value>::value , __is_empty(cvt) >::value );
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+template<> struct is_empty_impl< void > { static const bool value = (false); };
+
+template<> struct is_empty_impl< void const > { static const bool value = (false); };
+template<> struct is_empty_impl< void volatile > { static const bool value = (false); };
+template<> struct is_empty_impl< void const volatile > { static const bool value = (false); };
+
+
+}
+
+template< typename T > struct is_empty : ::boost::integral_constant<bool,::boost::detail::is_empty_impl<T>::value> { };
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+namespace boost {
+
+
+template< typename T > struct is_floating_point : ::boost::integral_constant<bool,false> { };
+template<> struct is_floating_point< float > : ::boost::integral_constant<bool,true> { }; template<> struct is_floating_point< float const > : ::boost::integral_constant<bool,true> { }; template<> struct is_floating_point< float volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_floating_point< float const volatile > : ::boost::integral_constant<bool,true> { };
+template<> struct is_floating_point< double > : ::boost::integral_constant<bool,true> { }; template<> struct is_floating_point< double const > : ::boost::integral_constant<bool,true> { }; template<> struct is_floating_point< double volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_floating_point< double const volatile > : ::boost::integral_constant<bool,true> { };
+template<> struct is_floating_point< long double > : ::boost::integral_constant<bool,true> { }; template<> struct is_floating_point< long double const > : ::boost::integral_constant<bool,true> { }; template<> struct is_floating_point< long double volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_floating_point< long double const volatile > : ::boost::integral_constant<bool,true> { };
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+namespace boost {
+
+namespace detail{
+
+template <typename T>
+struct is_member_object_pointer_impl
+{
+ static const bool value = (::boost::type_traits::ice_and< ::boost::is_member_pointer<T>::value, ::boost::type_traits::ice_not< ::boost::is_member_function_pointer<T>::value >::value >::value );
+};
+
+}
+
+template< typename T > struct is_member_object_pointer : ::boost::integral_constant<bool,::boost::detail::is_member_object_pointer_impl<T>::value> { };
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+namespace boost {
+
+namespace detail {
+
+template <typename T>
+struct is_object_impl
+{
+
+ static const bool value = (::boost::type_traits::ice_and< ::boost::type_traits::ice_not< ::boost::is_reference<T>::value>::value, ::boost::type_traits::ice_not< ::boost::is_void<T>::value>::value, ::boost::type_traits::ice_not< ::boost::is_function<T>::value>::value >::value);
+
+
+
+
+
+
+
+};
+
+}
+
+template< typename T > struct is_object : ::boost::integral_constant<bool,::boost::detail::is_object_impl<T>::value> { };
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+namespace boost{
+
+
+
+namespace detail{
+
+template <class T>
+struct is_polymorphic_imp1
+{
+
+
+
+ typedef typename remove_cv<T>::type ncvT;
+ struct d1 : public ncvT
+ {
+ d1();
+
+ ~d1()throw();
+
+ char padding[256];
+ private:
+
+ d1(const d1&);
+ d1& operator=(const d1&);
+ };
+ struct d2 : public ncvT
+ {
+ d2();
+ virtual ~d2()throw();
+
+
+
+
+
+
+ char padding[256];
+ private:
+
+ d2(const d2&);
+ d2& operator=(const d2&);
+ };
+
+ static const bool value = (sizeof(d2) == sizeof(d1));
+};
+
+template <class T>
+struct is_polymorphic_imp2
+{
+ static const bool value = false;
+};
+
+template <bool is_class>
+struct is_polymorphic_selector
+{
+ template <class T>
+ struct rebind
+ {
+ typedef is_polymorphic_imp2<T> type;
+ };
+};
+
+template <>
+struct is_polymorphic_selector<true>
+{
+ template <class T>
+ struct rebind
+ {
+ typedef is_polymorphic_imp1<T> type;
+ };
+};
+
+template <class T>
+struct is_polymorphic_imp
+{
+ typedef is_polymorphic_selector< ::boost::is_class<T>::value> selector;
+ typedef typename selector::template rebind<T> binder;
+ typedef typename binder::type imp_type;
+ static const bool value = imp_type::value;
+};
+
+}
+
+template< typename T > struct is_polymorphic : ::boost::integral_constant<bool,::boost::detail::is_polymorphic_imp<T>::value> { };
+
+
+
+
+
+
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+namespace boost {
+
+
+
+namespace detail{
+
+
+
+template <class T>
+struct is_signed_values
+{
+
+
+
+
+
+ typedef typename remove_cv<T>::type no_cv_t;
+ 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>
+struct is_signed_helper
+{
+ typedef typename remove_cv<T>::type no_cv_t;
+ static const bool value = (!(::boost::detail::is_signed_values<T>::minus_one > boost::detail::is_signed_values<T>::zero));
+};
+
+template <bool integral_type>
+struct is_signed_select_helper
+{
+ template <class T>
+ struct rebind
+ {
+ typedef is_signed_helper<T> type;
+ };
+};
+
+template <>
+struct is_signed_select_helper<false>
+{
+ template <class T>
+ struct rebind
+ {
+ typedef false_type type;
+ };
+};
+
+template <class T>
+struct is_signed_imp
+{
+ typedef is_signed_select_helper<
+ ::boost::type_traits::ice_or<
+ ::boost::is_integral<T>::value,
+ ::boost::is_enum<T>::value>::value
+ > selector;
+ typedef typename selector::template rebind<T> binder;
+ typedef typename binder::type type;
+
+
+
+ static const bool value = type::value;
+
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
+
+
+
+
+
+
+template< typename T > struct is_signed : ::boost::integral_constant<bool,::boost::detail::is_signed_imp<T>::value> { };
+
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+namespace boost {
+
+namespace detail {
+
+template <typename T>
+struct is_stateless_impl
+{
+ static const bool value = (::boost::type_traits::ice_and< ::boost::has_trivial_constructor<T>::value, ::boost::has_trivial_copy<T>::value, ::boost::has_trivial_destructor<T>::value, ::boost::is_class<T>::value, ::boost::is_empty<T>::value >::value);
+};
+
+}
+
+template< typename T > struct is_stateless : ::boost::integral_constant<bool,::boost::detail::is_stateless_impl<T>::value> { };
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+namespace boost {
+
+namespace detail {
+
+template <typename T> struct is_union_impl
+{
+ typedef typename remove_cv<T>::type cvt;
+ static const bool value = __is_union(cvt);
+};
+
+
+
+
+
+
+
+
+
+
+
+}
+
+template< typename T > struct is_union : ::boost::integral_constant<bool,::boost::detail::is_union_impl<T>::value> { };
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+namespace boost {
+
+
+
+namespace detail{
+
+
+
+template <class T>
+struct is_unsigned_values
+{
+
+
+
+
+
+ typedef typename remove_cv<T>::type no_cv_t;
+ 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>
+struct is_ununsigned_helper
+{
+ static const bool value = (::boost::detail::is_unsigned_values<T>::minus_one > ::boost::detail::is_unsigned_values<T>::zero);
+};
+
+template <bool integral_type>
+struct is_ununsigned_select_helper
+{
+ template <class T>
+ struct rebind
+ {
+ typedef is_ununsigned_helper<T> type;
+ };
+};
+
+template <>
+struct is_ununsigned_select_helper<false>
+{
+ template <class T>
+ struct rebind
+ {
+ typedef false_type type;
+ };
+};
+
+template <class T>
+struct is_unsigned_imp
+{
+ typedef is_ununsigned_select_helper<
+ ::boost::type_traits::ice_or<
+ ::boost::is_integral<T>::value,
+ ::boost::is_enum<T>::value>::value
+ > selector;
+ typedef typename selector::template rebind<T> binder;
+ typedef typename binder::type type;
+ static const bool value = type::value;
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
+
+
+
+
+
+
+template< typename T > struct is_unsigned : ::boost::integral_constant<bool,::boost::detail::is_unsigned_imp<T>::value> { };
+
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template< bool C_, typename T1, typename T2, typename T3, typename T4 >
+struct and_impl
+ : false_
+{
+};
+
+template< typename T1, typename T2, typename T3, typename T4 >
+struct and_impl< true,T1,T2,T3,T4 >
+ : and_impl<
+ T1::type::value
+ , T2, T3, T4
+ , true_
+ >
+{
+};
+
+template<>
+struct and_impl<
+ true
+ , true_, true_, true_, true_
+ >
+ : true_
+{
+};
+
+}
+
+template<
+ typename T1 = na
+ , typename T2 = na
+ , typename T3 = true_, typename T4 = true_, typename T5 = true_
+ >
+struct and_
+
+ : aux::and_impl<
+ T1::type::value
+ , T2, T3, T4, T5
+ >
+
+{
+};
+
+template<> struct and_< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : and_< T1 , T2 > { }; }; template< typename Tag > struct lambda< and_< na , na > , Tag > { typedef false_ is_le; typedef and_< na , na > result_; typedef and_< na , na > type; };
+
+}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template< long C_ >
+struct not_impl
+ : bool_<!C_>
+{
+};
+
+}
+
+
+template<
+ typename T = na
+ >
+struct not_
+ : aux::not_impl<
+ T::type::value
+ >
+{
+
+};
+
+template<> struct not_< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : not_< T1 > { }; }; template< typename Tag > struct lambda< not_< na > , Tag > { typedef false_ is_le; typedef not_< na > result_; typedef not_< na > type; };
+
+}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+namespace boost {
+namespace detail {
+
+
+
+#pragma warning( push )
+#pragma warning( disable : 4584 )
+
+
+
+
+template<typename Base, typename Derived, typename tag>
+struct is_virtual_base_of_impl
+{
+ static const bool value = false;
+};
+
+template<typename Base, typename Derived>
+struct is_virtual_base_of_impl<Base, Derived, mpl::true_>
+{
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ struct boost_type_traits_internal_struct_X : Derived, virtual Base
+ {
+ 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 boost_type_traits_internal_struct_Y : Derived
+ {
+ 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();
+ };
+
+ static const bool value = (sizeof(boost_type_traits_internal_struct_X)==sizeof(boost_type_traits_internal_struct_Y));
+};
+
+template<typename Base, typename Derived>
+struct is_virtual_base_of_impl2
+{
+ typedef typename mpl::and_<is_base_of<Base, Derived>, mpl::not_<is_same<Base, Derived> > >::type tag_type;
+ typedef is_virtual_base_of_impl<Base, Derived, tag_type> imp;
+ static const bool value = imp::value;
+};
+
+
+#pragma warning( pop )
+
+
+}
+
+template< typename Base, typename Derived > struct is_virtual_base_of : ::boost::integral_constant<bool,(::boost::detail::is_virtual_base_of_impl2<Base,Derived>::value)> { };
+
+
+template< typename Base, typename Derived > struct is_virtual_base_of< Base&,Derived > : ::boost::integral_constant<bool,false> { };
+template< typename Base, typename Derived > struct is_virtual_base_of< Base,Derived& > : ::boost::integral_constant<bool,false> { };
+template< typename Base, typename Derived > struct is_virtual_base_of< Base&,Derived& > : ::boost::integral_constant<bool,false> { };
+
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+namespace boost {
+
+namespace detail {
+
+template <class T>
+struct make_unsigned_imp
+{
+ typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)((::boost::type_traits::ice_or< ::boost::is_integral<T>::value, ::boost::is_enum<T>::value>::value)) >)> boost_static_assert_typedef_5;
+
+ typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)((::boost::type_traits::ice_not< ::boost::is_same< typename remove_cv<T>::type, bool>::value>::value)) >)> boost_static_assert_typedef_6;
+
+
+ typedef typename remove_cv<T>::type t_no_cv;
+ typedef typename mpl::if_c<
+ (::boost::type_traits::ice_and<
+ ::boost::is_unsigned<T>::value,
+ ::boost::is_integral<T>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, char>::value>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, wchar_t>::value>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, bool>::value>::value >::value),
+ T,
+ typename mpl::if_c<
+ (::boost::type_traits::ice_and<
+ ::boost::is_integral<T>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, char>::value>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, wchar_t>::value>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, bool>::value>::value>
+ ::value),
+ typename mpl::if_<
+ is_same<t_no_cv, signed char>,
+ unsigned char,
+ typename mpl::if_<
+ is_same<t_no_cv, short>,
+ unsigned short,
+ typename mpl::if_<
+ is_same<t_no_cv, int>,
+ unsigned int,
+ typename mpl::if_<
+ is_same<t_no_cv, long>,
+ unsigned long,
+
+ boost::ulong_long_type
+
+
+
+
+
+ >::type
+ >::type
+ >::type
+ >::type,
+
+ typename mpl::if_c<
+ sizeof(t_no_cv) == sizeof(unsigned char),
+ unsigned char,
+ typename mpl::if_c<
+ sizeof(t_no_cv) == sizeof(unsigned short),
+ unsigned short,
+ typename mpl::if_c<
+ sizeof(t_no_cv) == sizeof(unsigned int),
+ unsigned int,
+ typename mpl::if_c<
+ sizeof(t_no_cv) == sizeof(unsigned long),
+ unsigned long,
+
+ boost::ulong_long_type
+
+
+
+
+
+ >::type
+ >::type
+ >::type
+ >::type
+ >::type
+ >::type base_integer_type;
+
+
+ typedef typename mpl::if_<
+ is_const<T>,
+ typename add_const<base_integer_type>::type,
+ base_integer_type
+ >::type const_base_integer_type;
+
+
+ typedef typename mpl::if_<
+ is_volatile<T>,
+ typename add_volatile<const_base_integer_type>::type,
+ const_base_integer_type
+ >::type type;
+};
+
+
+}
+
+template< typename T > struct make_unsigned { typedef typename boost::detail::make_unsigned_imp<T>::type type; };
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+namespace boost {
+
+namespace detail {
+
+template <class T>
+struct make_signed_imp
+{
+ typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)((::boost::type_traits::ice_or< ::boost::is_integral<T>::value, ::boost::is_enum<T>::value>::value)) >)> boost_static_assert_typedef_7;
+
+ typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)((::boost::type_traits::ice_not< ::boost::is_same< typename remove_cv<T>::type, bool>::value>::value)) >)> boost_static_assert_typedef_8;
+
+
+ typedef typename remove_cv<T>::type t_no_cv;
+ typedef typename mpl::if_c<
+ (::boost::type_traits::ice_and<
+ ::boost::is_signed<T>::value,
+ ::boost::is_integral<T>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, char>::value>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, wchar_t>::value>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, bool>::value>::value >::value),
+ T,
+ typename mpl::if_c<
+ (::boost::type_traits::ice_and<
+ ::boost::is_integral<T>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, char>::value>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, wchar_t>::value>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, bool>::value>::value>
+ ::value),
+ typename mpl::if_<
+ is_same<t_no_cv, unsigned char>,
+ signed char,
+ typename mpl::if_<
+ is_same<t_no_cv, unsigned short>,
+ signed short,
+ typename mpl::if_<
+ is_same<t_no_cv, unsigned int>,
+ int,
+ typename mpl::if_<
+ is_same<t_no_cv, unsigned long>,
+ long,
+
+ boost::long_long_type
+
+
+
+
+
+ >::type
+ >::type
+ >::type
+ >::type,
+
+ typename mpl::if_c<
+ sizeof(t_no_cv) == sizeof(unsigned char),
+ signed char,
+ typename mpl::if_c<
+ sizeof(t_no_cv) == sizeof(unsigned short),
+ signed short,
+ typename mpl::if_c<
+ sizeof(t_no_cv) == sizeof(unsigned int),
+ int,
+ typename mpl::if_c<
+ sizeof(t_no_cv) == sizeof(unsigned long),
+ long,
+
+ boost::long_long_type
+
+
+
+
+
+ >::type
+ >::type
+ >::type
+ >::type
+ >::type
+ >::type base_integer_type;
+
+
+ typedef typename mpl::if_<
+ is_const<T>,
+ typename add_const<base_integer_type>::type,
+ base_integer_type
+ >::type const_base_integer_type;
+
+
+ typedef typename mpl::if_<
+ is_volatile<T>,
+ typename add_volatile<const_base_integer_type>::type,
+ const_base_integer_type
+ >::type type;
+};
+
+
+}
+
+template< typename T > struct make_signed { typedef typename boost::detail::make_signed_imp<T>::type type; };
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+namespace boost {
+
+
+
+namespace detail{
+
+template <class T, std::size_t N>
+struct rank_imp
+{
+ static const std::size_t value = N;
+};
+
+template <class T, std::size_t R, std::size_t N>
+struct rank_imp<T[R], N>
+{
+ static const std::size_t value = (::boost::detail::rank_imp<T, N+1>::value);
+};
+
+template <class T, std::size_t R, std::size_t N>
+struct rank_imp<T const[R], N>
+{
+ static const std::size_t value = (::boost::detail::rank_imp<T, N+1>::value);
+};
+
+template <class T, std::size_t R, std::size_t N>
+struct rank_imp<T volatile[R], N>
+{
+ static const std::size_t value = (::boost::detail::rank_imp<T, N+1>::value);
+};
+
+template <class T, std::size_t R, std::size_t N>
+struct rank_imp<T const volatile[R], N>
+{
+ static const std::size_t value = (::boost::detail::rank_imp<T, N+1>::value);
+};
+
+
+template <class T, std::size_t N>
+struct rank_imp<T[], N>
+{
+ static const std::size_t value = (::boost::detail::rank_imp<T, N+1>::value);
+};
+template <class T, std::size_t N>
+struct rank_imp<T const[], N>
+{
+ static const std::size_t value = (::boost::detail::rank_imp<T, N+1>::value);
+};
+template <class T, std::size_t N>
+struct rank_imp<T volatile[], N>
+{
+ static const std::size_t value = (::boost::detail::rank_imp<T, N+1>::value);
+};
+template <class T, std::size_t N>
+struct rank_imp<T const volatile[], N>
+{
+ static const std::size_t value = (::boost::detail::rank_imp<T, N+1>::value);
+};
+
+
+}
+
+
+
+
+
+
+template< typename T > struct rank : ::boost::integral_constant<std::size_t,(::boost::detail::rank_imp<T,0>::value)> { };
+
+
+}
+
+
+
- locale& operator=(const locale& _Right) throw ()
- {
- if (_Ptr != _Right._Ptr)
- {
- delete (_Ptr->_Decref());
- _Ptr = _Right._Ptr;
- _Ptr->_Incref();
- }
- return (*this);
- }
- string name() const
- {
- return (_Ptr->_Name);
- }
- const facet * _Getfacet(size_t _Id) const
- {
- const facet *_Facptr = _Id < _Ptr->_Facetcount
- ? _Ptr->_Facetvec[_Id] : 0;
- if (_Facptr != 0 || !_Ptr->_Xparent)
- return (_Facptr);
- else
- {
- locale::_Locimp *_Ptr = _Getgloballocale();
- return (_Id < _Ptr->_Facetcount
- ? _Ptr->_Facetvec[_Id]
- : 0);
- }
- }
- bool operator==(const locale& _Loc) const
- {
- return (_Ptr == _Loc._Ptr
- || name().compare("*") != 0 && name().compare(_Loc.name()) == 0);
- }
- bool operator!=(const locale& _Right) const
- {
- return (!(*this == _Right));
- }
- static const locale& __cdecl classic();
- static locale __cdecl global(const locale&);
- static locale __cdecl empty();
-private:
- locale(_Locimp *_Ptrimp)
- : _Ptr(_Ptrimp)
- {
- }
- static _Locimp *__cdecl _Getgloballocale();
- static _Locimp *__cdecl _Init();
- static void __cdecl _Setgloballocale(void *);
- _Locimp *_Ptr;
- };
-#pragma warning(pop)
-
-template<class _Facet>
- struct _Facetptr
- {
- static const locale::facet *_Psave;
- };
-template<class _Facet>
- const locale::facet *_Facetptr<_Facet>::_Psave = 0;
-template<class _Facet> inline __declspec(deprecated("This is an obsolete part of the Standard C++ Library Implementation. Do not use it."))
- locale _Addfac(locale _Loc, const _Facet *_Facptr)
- {
- return (_Loc._Addfac((_Facet *)_Facptr, _Facet::id,
- _Facet::_Getcat()));
- }
-
-
-template<class _Facet> inline
- const _Facet& __cdecl use_facet(const locale& _Loc)
- {
- { ::std:: _Lockit _Lock(0);
- const locale::facet *_Psave =
- _Facetptr<_Facet>::_Psave;
- size_t _Id = _Facet::id;
- const locale::facet *_Pf = _Loc._Getfacet(_Id);
- if (_Pf != 0)
- ;
- else if (_Psave != 0)
- _Pf = _Psave;
- else if (_Facet::_Getcat(&_Psave) == (size_t)(-1))
-
- throw bad_cast();
-
- else
- {
- _Pf = _Psave;
- _Facetptr<_Facet>::_Psave = _Psave;
- locale::facet *_Pfmod = (_Facet *)_Psave;
- _Pfmod->_Incref();
- _Pfmod->_Register();
- }
- return ((const _Facet&)(*_Pf));
- }
- }
-template<class _Facet> inline __declspec(deprecated("This is an obsolete part of the Standard C++ Library Implementation. Do not use it."))
- const _Facet& __cdecl use_facet(const locale& _Loc, const _Facet *,
- bool = false)
- {
- return use_facet<_Facet>(_Loc);
- }
-
-template<class _Elem,
- class _InIt> inline
- int __cdecl _Getloctxt(_InIt& _First, _InIt& _Last, size_t _Numfields,
- const _Elem *_Ptr)
- {
- for (size_t _Off = 0; _Ptr[_Off] != (_Elem)0; ++_Off)
- if (_Ptr[_Off] == _Ptr[0])
- ++_Numfields;
- string _Str(_Numfields, '\0');
- int _Ans = -2;
- for (size_t _Column = 1; ; ++_Column, ++_First, _Ans = -1)
- {
- bool _Prefix = false;
- size_t _Off = 0;
- size_t _Field = 0;
- for (; _Field < _Numfields; ++_Field)
- {
- for (; _Ptr[_Off] != (_Elem)0 && _Ptr[_Off] != _Ptr[0]; ++_Off)
- ;
- if (_Str[_Field] != '\0')
- _Off += _Str[_Field];
- else if (_Ptr[_Off += _Column] == _Ptr[0]
- || _Ptr[_Off] == (_Elem)0)
- {
- _Str[_Field] = (char)(_Column < 127
- ? _Column : 127);
- _Ans = (int)_Field;
- }
- else if (_First == _Last || _Ptr[_Off] != *_First)
- _Str[_Field] = (char)(_Column < 127
- ? _Column : 127);
- else
- _Prefix = true;
- }
- if (!_Prefix || _First == _Last)
- break;
- }
- return (_Ans);
- }
-
-template<class _Elem> inline
- char __cdecl _Maklocbyte(_Elem _Char,
- const _Locinfo::_Cvtvec&)
- {
- return ((char)(unsigned char)_Char);
- }
-template<> inline
- char __cdecl _Maklocbyte(wchar_t _Char,
- const _Locinfo::_Cvtvec& _Cvt)
- {
- char _Byte = '\0';
- mbstate_t _Mbst1 = {0};
- _Wcrtomb(&_Byte, _Char, &_Mbst1, &_Cvt);
- return (_Byte);
- }
-
-template<class _Elem> inline
- _Elem __cdecl _Maklocchr(char _Byte, _Elem *,
- const _Locinfo::_Cvtvec&)
- {
- return ((_Elem)(unsigned char)_Byte);
- }
-template<> inline
- wchar_t __cdecl _Maklocchr(char _Byte, wchar_t *,
- const _Locinfo::_Cvtvec& _Cvt)
- {
- wchar_t _Wc = L'\0';
- mbstate_t _Mbst1 = {0};
- _Mbrtowc(&_Wc, &_Byte, 1, &_Mbst1, &_Cvt);
- return (_Wc);
- }
-
-template<class _Elem> inline
- _Elem *__cdecl _Maklocstr(const char *_Ptr, _Elem *,
- const _Locinfo::_Cvtvec&)
- {
- size_t _Count = ::strlen(_Ptr) + 1;
- _Elem *_Ptrdest = new _Elem[_Count];
-#pragma warning(push)
-#pragma warning(disable: 6011)
-
- for (_Elem *_Ptrnext = _Ptrdest; 0 < _Count; --_Count, ++_Ptrnext, ++_Ptr)
- *_Ptrnext = (_Elem)(unsigned char)*_Ptr;
- return (_Ptrdest);
-#pragma warning(pop)
- }
-template<> inline
- wchar_t *__cdecl _Maklocstr(const char *_Ptr, wchar_t *,
- const _Locinfo::_Cvtvec& _Cvt)
- {
- size_t _Count, _Count1;
- size_t _Wchars;
- const char *_Ptr1;
- int _Bytes;
- wchar_t _Wc;
- mbstate_t _Mbst1 = {0};
- _Count1 = ::strlen(_Ptr) + 1;
- for (_Count = _Count1, _Wchars = 0, _Ptr1 = _Ptr; 0 < _Count;
- _Count -= _Bytes, _Ptr1 += _Bytes, ++_Wchars)
- if ((_Bytes = _Mbrtowc(&_Wc, _Ptr1, _Count, &_Mbst1, &_Cvt)) <= 0)
- break;
- ++_Wchars;
- wchar_t *_Ptrdest = new wchar_t[_Wchars];
- wchar_t *_Ptrnext = _Ptrdest;
- mbstate_t _Mbst2 = {0};
-#pragma warning(push)
-#pragma warning(disable: 6011)
-
- for (; 0 < _Wchars;
- _Count -= _Bytes, _Ptr += _Bytes, --_Wchars, ++_Ptrnext)
- if ((_Bytes = _Mbrtowc(_Ptrnext, _Ptr, _Count1, &_Mbst2, &_Cvt)) <= 0)
- break;
- *_Ptrnext = L'\0';
-#pragma warning(pop)
- return (_Ptrdest);
- }
-
-class codecvt_base
- : public locale::facet
- {
-public:
- enum
- {
- ok, partial, error, noconv};
- typedef int result;
- codecvt_base(size_t _Refs = 0)
- : locale::facet(_Refs)
- {
- }
- bool always_noconv() const throw ()
- {
- return (do_always_noconv());
- }
- int max_length() const throw ()
- {
- return (do_max_length());
- }
- int encoding() const throw ()
- {
- return (do_encoding());
- }
- ~codecvt_base()
- {
- }
-protected:
- virtual bool do_always_noconv() const throw ()
- {
- return (true);
- }
- virtual int do_max_length() const throw ()
- {
- return (1);
- }
- virtual int do_encoding() const throw ()
- {
- return (1);
- }
- };
-
-template<class _Elem,
- class _Byte,
- class _Statype>
- class codecvt
- : public codecvt_base
- {
-public:
- typedef _Elem intern_type;
- typedef _Byte extern_type;
- typedef _Statype state_type;
- result in(_Statype& _State,
- const _Byte *_First1, const _Byte *_Last1, const _Byte *& _Mid1,
- _Elem *_First2, _Elem *_Last2, _Elem *& _Mid2) const
- {
- return (do_in(_State,
- _First1, _Last1, _Mid1, _First2, _Last2, _Mid2));
- }
- result out(_Statype& _State,
- const _Elem *_First1, const _Elem *_Last1, const _Elem *& _Mid1,
- _Byte *_First2, _Byte *_Last2, _Byte *& _Mid2) const
- {
- return (do_out(_State,
- _First1, _Last1, _Mid1, _First2, _Last2, _Mid2));
- }
- result unshift(_Statype& _State,
- _Byte *_First2, _Byte *_Last2, _Byte *& _Mid2) const
- {
- return (do_unshift(_State, _First2, _Last2, _Mid2));
- }
- int length(const _Statype& _State, const _Byte *_First1,
- const _Byte *_Last1, size_t _Count) const
- {
- return (do_length(_State, _First1, _Last1, _Count));
- }
- static locale::id id;
- explicit codecvt(size_t _Refs = 0)
- : codecvt_base(_Refs)
- {
- { _Locinfo _Lobj;
- _Init(_Lobj);
- }
- }
- codecvt(const _Locinfo& _Lobj, size_t _Refs = 0)
- : codecvt_base(_Refs)
- {
- _Init(_Lobj);
- }
- static size_t __cdecl _Getcat(const locale::facet **_Ppf = 0)
- {
- if (_Ppf != 0 && *_Ppf == 0)
- *_Ppf = new codecvt<_Elem, _Byte, _Statype>;
- return (2);
- }
-protected:
- virtual ~codecvt()
- {
- }
-protected:
- void _Init(const _Locinfo&)
- {
- }
- virtual result do_in(_Statype&,
- const _Byte *_First1, const _Byte *, const _Byte *& _Mid1,
- _Elem *_First2, _Elem *, _Elem *& _Mid2) const
- {
- _Mid1 = _First1, _Mid2 = _First2;
- return (noconv);
- }
- virtual result do_out(_Statype&,
- const _Elem *_First1, const _Elem *, const _Elem *& _Mid1,
- _Byte *_First2, _Byte *, _Byte *& _Mid2) const
- {
- _Mid1 = _First1, _Mid2 = _First2;
- return (noconv);
- }
- virtual result do_unshift(_Statype&,
- _Byte *_First2, _Byte *, _Byte *&_Mid2) const
- {
- _Mid2 = _First2;
- return (noconv);
- }
- virtual int do_length(const _Statype&, const _Byte *_First1,
- const _Byte *_Last1, size_t _Count) const
- {
- return ((int)(_Count < (size_t)(_Last1 - _First1)
- ? _Count : _Last1 - _First1));
- }
- };
-
-template<class _Elem,
- class _Byte,
- class _Statype>
- locale::id codecvt<_Elem, _Byte, _Statype>::id;
-
-template<> class codecvt<wchar_t, char, _Mbstatet>
- : public codecvt_base
- {
-public:
- typedef wchar_t _Elem;
- typedef char _Byte;
- typedef _Mbstatet _Statype;
- typedef _Elem intern_type;
- typedef _Byte extern_type;
- typedef _Statype state_type;
- result in(_Statype& _State,
- const _Byte *_First1, const _Byte *_Last1, const _Byte *& _Mid1,
- _Elem *_First2, _Elem *_Last2, _Elem *& _Mid2) const
- {
- return (do_in(_State,
- _First1, _Last1, _Mid1, _First2, _Last2, _Mid2));
- }
- result out(_Statype& _State,
- const _Elem *_First1, const _Elem *_Last1, const _Elem *& _Mid1,
- _Byte *_First2, _Byte *_Last2, _Byte *& _Mid2) const
- {
- return (do_out(_State,
- _First1, _Last1, _Mid1, _First2, _Last2, _Mid2));
- }
- result unshift(_Statype& _State,
- _Byte *_First2, _Byte *_Last2, _Byte *& _Mid2) const
- {
- return (do_unshift(_State,
- _First2, _Last2, _Mid2));
- }
- int length(const _Statype& _State, const _Byte *_First1,
- const _Byte *_Last1, size_t _Count) const
- {
- return (do_length(_State, _First1, _Last1, _Count));
- }
- static locale::id& __cdecl _Id_func();
- static locale::id id;
- explicit codecvt(size_t _Refs = 0)
- : codecvt_base(_Refs)
- {
- { _Locinfo _Lobj;
- _Init(_Lobj);
- }
- }
- codecvt(const _Locinfo& _Lobj, size_t _Refs = 0)
- : codecvt_base(_Refs)
- {
- _Init(_Lobj);
- }
- static size_t __cdecl _Getcat(const locale::facet **_Ppf = 0)
- {
- if (_Ppf != 0 && *_Ppf == 0)
- *_Ppf = new codecvt<_Elem, _Byte, _Statype>;
- return (2);
- }
-protected:
- virtual ~codecvt()
- {
- }
-protected:
- void _Init(const _Locinfo& _Lobj)
- {
- _Cvt = _Lobj._Getcvt();
- }
- virtual result do_in(_Statype& _State,
- const _Byte *_First1, const _Byte *_Last1, const _Byte *& _Mid1,
- _Elem *_First2, _Elem *_Last2, _Elem *& _Mid2) const
- {
- ;
- ;
- _Mid1 = _First1, _Mid2 = _First2;
- result _Ans = _Mid1 == _Last1 ? ok : partial;
- int _Bytes;
- while (_Mid1 != _Last1 && _Mid2 != _Last2)
- switch (_Bytes = _Mbrtowc(_Mid2, _Mid1, _Last1 - _Mid1,
- &_State, &_Cvt))
- {
- case -2:
- _Mid1 = _Last1;
- return (_Ans);
- case -1:
- return (error);
- case 0:
- if (*_Mid2 == (_Elem)0)
- _Bytes = (int)::strlen(_Mid1) + 1;
-
- default:
- if (_Bytes == -3)
- _Bytes = 0;
- _Mid1 += _Bytes;
- ++_Mid2;
- _Ans = ok;
- }
- return (_Ans);
- }
- virtual result do_out(_Statype& _State,
- const _Elem *_First1, const _Elem *_Last1, const _Elem *& _Mid1,
- _Byte *_First2, _Byte *_Last2, _Byte *& _Mid2) const
- {
- ;
- ;
- _Mid1 = _First1, _Mid2 = _First2;
- result _Ans = _Mid1 == _Last1 ? ok : partial;
- int _Bytes;
- while (_Mid1 != _Last1 && _Mid2 != _Last2)
- if (5 <= _Last2 - _Mid2)
- if ((_Bytes = _Wcrtomb(_Mid2, *_Mid1,
- &_State, &_Cvt)) < 0)
- return (error);
- else
- ++_Mid1, _Mid2 += _Bytes, _Ans = ok;
- else
- {
- _Byte _Buf[5];
- _Statype _Stsave = _State;
- if ((_Bytes = _Wcrtomb(_Buf, *_Mid1,
- &_State, &_Cvt)) < 0)
- return (error);
- else if (_Last2 - _Mid2 < _Bytes)
- {
- _State = _Stsave;
- return (_Ans);
- }
- else
- {
- ::memcpy_s((_Mid2), (_Last2 - _Mid2), (_Buf), (_Bytes));
- ++_Mid1, _Mid2 += _Bytes, _Ans = ok;
- }
- }
- return (_Ans);
- }
- virtual result do_unshift(_Statype& _State,
- _Byte *_First2, _Byte *_Last2, _Byte *& _Mid2) const
- {
- ;
- _Mid2 = _First2;
- result _Ans = ok;
- int _Bytes;
- _Byte _Buf[5];
- _Statype _Stsave = _State;
- if ((_Bytes = _Wcrtomb(_Buf, L'\0', &_State, &_Cvt)) <= 0)
- _Ans = error;
- else if (_Last2 - _Mid2 < --_Bytes)
- {
- _State = _Stsave;
- _Ans = partial;
- }
- else if (0 < _Bytes)
- {
- ::memcpy_s((_Mid2), (_Last2 - _Mid2), (_Buf), (_Bytes));
- _Mid2 += _Bytes;
- }
- return (_Ans);
- }
- virtual int do_length(const _Statype& _State, const _Byte *_First1,
- const _Byte *_Last1, size_t _Count) const
- {
- ;
- int _Wchars;
- const _Byte *_Mid1;
- _Statype _Mystate = _State;
- for (_Wchars = 0, _Mid1 = _First1;
- (size_t)_Wchars < _Count && _Mid1 != _Last1; )
- {
- int _Bytes;
- _Elem _Ch;
- switch (_Bytes = _Mbrtowc(&_Ch, _Mid1, _Last1 - _Mid1,
- &_Mystate, &_Cvt))
- {
- case -2:
- return (_Wchars);
- case -1:
- return (_Wchars);
- case 0:
- if (_Ch == (_Elem)0)
- _Bytes = (int)::strlen(_Mid1) + 1;
-
- default:
- if (_Bytes == -3)
- _Bytes = 0;
- _Mid1 += _Bytes;
- ++_Wchars;
- }
- }
- return (_Wchars);
- }
- virtual bool do_always_noconv() const throw ()
- {
- return (false);
- }
- virtual int do_max_length() const throw ()
- {
- return (5);
- }
- virtual int do_encoding() const throw ()
- {
- return (0);
- }
-private:
- _Locinfo::_Cvtvec _Cvt;
- };
-
-template<> class codecvt<unsigned short, char, _Mbstatet>
- : public codecvt_base
- {
-public:
- typedef unsigned short _Elem;
- typedef char _Byte;
- typedef _Mbstatet _Statype;
- typedef _Elem intern_type;
- typedef _Byte extern_type;
- typedef _Statype state_type;
- result in(_Statype& _State,
- const _Byte *_First1, const _Byte *_Last1, const _Byte *& _Mid1,
- _Elem *_First2, _Elem *_Last2, _Elem *& _Mid2) const
- {
- return (do_in(_State,
- _First1, _Last1, _Mid1, _First2, _Last2, _Mid2));
- }
- result out(_Statype& _State,
- const _Elem *_First1, const _Elem *_Last1, const _Elem *& _Mid1,
- _Byte *_First2, _Byte *_Last2, _Byte *& _Mid2) const
- {
- return (do_out(_State,
- _First1, _Last1, _Mid1, _First2, _Last2, _Mid2));
- }
- result unshift(_Statype& _State,
- _Byte *_First2, _Byte *_Last2, _Byte *& _Mid2) const
- {
- return (do_unshift(_State,
- _First2, _Last2, _Mid2));
- }
- int length(const _Statype& _State, const _Byte *_First1,
- const _Byte *_Last1, size_t _Count) const
- {
- return (do_length(_State, _First1, _Last1, _Count));
- }
- static locale::id& __cdecl _Id_func();
- static locale::id id;
- explicit codecvt(size_t _Refs = 0)
- : codecvt_base(_Refs)
- {
- { _Locinfo _Lobj;
- _Init(_Lobj);
- }
- }
- codecvt(const _Locinfo& _Lobj, size_t _Refs = 0)
- : codecvt_base(_Refs)
- {
- _Init(_Lobj);
- }
- static size_t __cdecl _Getcat(const locale::facet **_Ppf = 0)
- {
- if (_Ppf != 0 && *_Ppf == 0)
- *_Ppf = new codecvt<_Elem, _Byte, _Statype>;
- return (2);
- }
-protected:
- virtual ~codecvt()
- {
- }
-protected:
- codecvt(const char *_Locname, size_t _Refs = 0)
- : codecvt_base(_Refs)
- {
- { _Locinfo _Lobj(_Locname);
- _Init(_Lobj);
- }
- }
- void _Init(const _Locinfo& _Lobj)
- {
- _Cvt = _Lobj._Getcvt();
- }
- virtual result do_in(_Statype& _State,
- const _Byte *_First1, const _Byte *_Last1, const _Byte *& _Mid1,
- _Elem *_First2, _Elem *_Last2, _Elem *& _Mid2) const
- {
- ;
- ;
- _Mid1 = _First1, _Mid2 = _First2;
- result _Ans = _Mid1 == _Last1 ? ok : partial;
- int _Bytes;
- while (_Mid1 != _Last1 && _Mid2 != _Last2)
- switch (_Bytes = _Mbrtowc((wchar_t *)_Mid2, _Mid1, _Last1 - _Mid1,
- &_State, &_Cvt))
- {
- case -2:
- _Mid1 = _Last1;
- return (_Ans);
- case -1:
- return (error);
- case 0:
- if (*_Mid2 == (_Elem)0)
- _Bytes = (int)::strlen(_Mid1) + 1;
-
- default:
- if (_Bytes == -3)
- _Bytes = 0;
- _Mid1 += _Bytes;
- ++_Mid2;
- _Ans = ok;
- }
- return (_Ans);
- }
- virtual result do_out(_Statype& _State,
- const _Elem *_First1, const _Elem *_Last1, const _Elem *& _Mid1,
- _Byte *_First2, _Byte *_Last2, _Byte *& _Mid2) const
- {
- ;
- ;
- _Mid1 = _First1, _Mid2 = _First2;
- result _Ans = _Mid1 == _Last1 ? ok : partial;
- int _Bytes;
- while (_Mid1 != _Last1 && _Mid2 != _Last2)
- if (5 <= _Last2 - _Mid2)
- if ((_Bytes = _Wcrtomb(_Mid2, *_Mid1,
- &_State, &_Cvt)) < 0)
- return (error);
- else
- ++_Mid1, _Mid2 += _Bytes, _Ans = ok;
- else
- {
- _Byte _Buf[5];
- _Statype _Stsave = _State;
- if ((_Bytes = _Wcrtomb(_Buf, *_Mid1,
- &_State, &_Cvt)) < 0)
- return (error);
- else if (_Last2 - _Mid2 < _Bytes)
- {
- _State = _Stsave;
- return (_Ans);
- }
- else
- {
- ::memcpy_s((_Mid2), (_Last2 - _Mid2), (_Buf), (_Bytes));
- ++_Mid1, _Mid2 += _Bytes, _Ans = ok;
- }
- }
- return (_Ans);
- }
- virtual result do_unshift(_Statype& _State,
- _Byte *_First2, _Byte *_Last2, _Byte *& _Mid2) const
- {
- ;
- _Mid2 = _First2;
- result _Ans = ok;
- int _Bytes;
- _Byte _Buf[5];
- _Statype _Stsave = _State;
- if ((_Bytes = _Wcrtomb(_Buf, L'\0', &_State, &_Cvt)) <= 0)
- _Ans = error;
- else if (_Last2 - _Mid2 < --_Bytes)
- {
- _State = _Stsave;
- _Ans = partial;
- }
- else if (0 < _Bytes)
- {
- ::memcpy_s((_Mid2), (_Last2 - _Mid2), (_Buf), (_Bytes));
- _Mid2 += _Bytes;
- }
- return (_Ans);
- }
- virtual int do_length(const _Statype& _State, const _Byte *_First1,
- const _Byte *_Last1, size_t _Count) const
- {
- ;
- int _Wchars;
- const _Byte *_Mid1;
- _Statype _Mystate = _State;
- for (_Wchars = 0, _Mid1 = _First1;
- (size_t)_Wchars < _Count && _Mid1 != _Last1; )
- {
- int _Bytes;
- _Elem _Ch;
- switch (_Bytes = _Mbrtowc((wchar_t *)&_Ch, _Mid1, _Last1 - _Mid1,
- &_Mystate, &_Cvt))
- {
- case -2:
- return (_Wchars);
- case -1:
- return (_Wchars);
- case 0:
- if (_Ch == (_Elem)0)
- _Bytes = (int)::strlen(_Mid1) + 1;
-
- default:
- if (_Bytes == -3)
- _Bytes = 0;
- _Mid1 += _Bytes;
- ++_Wchars;
- }
- }
- return (_Wchars);
- }
- virtual bool do_always_noconv() const throw ()
- {
- return (false);
- }
- virtual int do_max_length() const throw ()
- {
- return (5);
- }
- virtual int do_encoding() const throw ()
- {
- return (0);
- }
-private:
- _Locinfo::_Cvtvec _Cvt;
- };
-
-template<class _Elem,
- class _Byte,
- class _Statype>
- class codecvt_byname
- : public codecvt<_Elem, _Byte, _Statype>
- {
-public:
- explicit codecvt_byname(const char *_Locname, size_t _Refs = 0)
- : codecvt<_Elem, _Byte, _Statype>(_Locname, _Refs)
- {
- }
-protected:
- virtual ~codecvt_byname()
- {
- }
- };
-
-struct ctype_base
- : public locale::facet
- {
- enum
- {
- alnum = 0x4|0x2|0x1|0x100, alpha = 0x2|0x1|0x100,
- cntrl = 0x20, digit = 0x4, graph = 0x4|0x2|0x10|0x1|0x100,
- lower = 0x2, print = 0x4|0x2|0x10|0x40|0x1|0x100|0x80,
- punct = 0x10, space = 0x8|0x40|0x000, upper = 0x1,
- xdigit = 0x80};
- typedef short mask;
- ctype_base(size_t _Refs = 0)
- : locale::facet(_Refs)
- {
- }
- ~ctype_base()
- {
- }
-protected:
- static void __cdecl _Xran()
- {
- throw out_of_range("out_of_range in ctype<T>");
- }
- };
-
-template<class _Elem>
- class ctype
- : public ctype_base
- {
-public:
- typedef _Elem char_type;
- bool is(mask _Maskval, _Elem _Ch) const
- {
- return (do_is(_Maskval, _Ch));
- }
- const _Elem * is(const _Elem *_First, const _Elem *_Last,
- mask *_Dest) const
- {
- return (do_is(_First, _Last, _Dest));
- }
- const _Elem * scan_is(mask _Maskval, const _Elem *_First,
- const _Elem *_Last) const
- {
- return (do_scan_is(_Maskval, _First, _Last));
- }
- const _Elem * scan_not(mask _Maskval, const _Elem *_First,
- const _Elem *_Last) const
- {
- return (do_scan_not(_Maskval, _First, _Last));
- }
- _Elem tolower(_Elem _Ch) const
- {
- return (do_tolower(_Ch));
- }
- const _Elem * tolower(_Elem *_First, const _Elem *_Last) const
- {
- return (do_tolower(_First, _Last));
- }
- _Elem toupper(_Elem _Ch) const
- {
- return (do_toupper(_Ch));
- }
- const _Elem * toupper(_Elem *_First, const _Elem *_Last) const
- {
- return (do_toupper(_First, _Last));
- }
- _Elem widen(char _Byte) const
- {
- return (do_widen(_Byte));
- }
- __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
- const char * widen(const char *_First, const char *_Last,
- _Elem *_Dest) const
- {
-#pragma warning(push)
-#pragma warning(disable:4996)
- return (do_widen(_First, _Last, _Dest));
-#pragma warning(pop)
- }
- const char * _Widen_s(const char *_First, const char *_Last,
- _Elem *_Dest, size_t _Dest_size) const
- {
- return (_Do_widen_s(_First, _Last, _Dest, _Dest_size));
- }
- char narrow(_Elem _Ch, char _Dflt = '\0') const
- {
- return (do_narrow(_Ch, _Dflt));
- }
- __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
- const _Elem * narrow(const _Elem *_First, const _Elem *_Last,
- char _Dflt, char *_Dest) const
- {
-
-#pragma warning(push)
-#pragma warning(disable:4996)
- return (do_narrow(_First, _Last, _Dflt, _Dest));
-#pragma warning(pop)
- }
- const _Elem * _Narrow_s(const _Elem *_First, const _Elem *_Last,
- char _Dflt, char *_Dest, size_t _Dest_size) const
- {
- return (_Do_narrow_s(_First, _Last, _Dflt, _Dest, _Dest_size));
- }
- static locale::id id;
- explicit ctype(size_t _Refs = 0)
- : ctype_base(_Refs)
- {
- { _Locinfo _Lobj;
- _Init(_Lobj);
- }
- }
- ctype(const _Locinfo& _Lobj, size_t _Refs = 0)
- : ctype_base(_Refs)
- {
- _Init(_Lobj);
- }
- static size_t __cdecl _Getcat(const locale::facet **_Ppf = 0)
- {
- if (_Ppf != 0 && *_Ppf == 0)
- *_Ppf = new ctype<_Elem>;
- return (2);
- }
-protected:
- virtual ~ctype()
- {
- if (_Ctype._Delfl)
- free((void *)_Ctype._Table);
- }
-protected:
- void _Init(const _Locinfo& _Lobj)
- {
- _Ctype = _Lobj._Getctype();
- }
- virtual bool do_is(mask _Maskval, _Elem _Ch) const
- {
- return ((_Ctype._Table[(unsigned char)narrow(_Ch)]
- & _Maskval) != 0);
- }
- virtual const _Elem * do_is(const _Elem *_First, const _Elem *_Last,
- mask *_Dest) const
- {
- ;
- ;
- for (; _First != _Last; ++_First, ++_Dest)
- *_Dest = _Ctype._Table[(unsigned char)narrow(*_First)];
- return (_First);
- }
- virtual const _Elem * do_scan_is(mask _Maskval,
- const _Elem *_First, const _Elem *_Last) const
- {
- ;
- for (; _First != _Last && !is(_Maskval, *_First); ++_First)
- ;
- return (_First);
- }
- virtual const _Elem * do_scan_not(mask _Maskval,
- const _Elem *_First, const _Elem *_Last) const
- {
- ;
- for (; _First != _Last && is(_Maskval, *_First); ++_First)
- ;
- return (_First);
- }
- virtual _Elem do_tolower(_Elem _Ch) const
- {
- unsigned char _Byte = (unsigned char)narrow(_Ch, '\0');
- if (_Byte == '\0')
- return (_Ch);
- else
- return (widen((char)_Tolower(_Byte, &_Ctype)));
- }
- virtual const _Elem * do_tolower(_Elem *_First, const _Elem *_Last) const
- {
- ;
- for (; _First != _Last; ++_First)
- {
- unsigned char _Byte = (unsigned char)narrow(*_First, '\0');
- if (_Byte != '\0')
- *_First = (widen((char)_Tolower(_Byte, &_Ctype)));
- }
- return ((const _Elem *)_First);
- }
- virtual _Elem do_toupper(_Elem _Ch) const
- {
- unsigned char _Byte = (unsigned char)narrow(_Ch, '\0');
- if (_Byte == '\0')
- return (_Ch);
- else
- return (widen((char)_Toupper(_Byte, &_Ctype)));
- }
- virtual const _Elem * do_toupper(_Elem *_First, const _Elem *_Last) const
- {
- ;
- for (; _First != _Last; ++_First)
- {
- unsigned char _Byte = (unsigned char)narrow(*_First, '\0');
- if (_Byte != '\0')
- *_First = (widen((char)_Toupper(_Byte, &_Ctype)));
- }
- return ((const _Elem *)_First);
- }
- virtual _Elem do_widen(char _Byte) const
- {
- return (_Maklocchr(_Byte, (_Elem *)0, _Cvt));
- }
- __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
- virtual const char * do_widen(const char *_First,
- const char *_Last, _Elem *_Dest) const
- {
-
- return _Do_widen_s(_First, _Last, _Dest, _Last - _First);
- }
- virtual const char * _Do_widen_s(const char *_First,
- const char *_Last, _Elem *_Dest, size_t _Dest_size) const
- {
- ;
- ;
- { if (!(_Dest_size >= (size_t)(_Last - _First))) { ((void)0); ::_invalid_parameter_noinfo(); } };
- for (; _First != _Last; ++_First, ++_Dest)
- *_Dest = _Maklocchr(*_First, (_Elem *)0, _Cvt);
- return (_First);
- }
- char _Donarrow(_Elem _Ch, char _Dflt) const
- {
- char _Byte;
- if (_Ch == (_Elem)0)
- return ('\0');
- else if ((_Byte = _Maklocbyte((_Elem)_Ch, _Cvt)) == '\0')
- return (_Dflt);
- else
- return (_Byte);
- }
- virtual char do_narrow(_Elem _Ch, char _Dflt) const
- {
- return (_Donarrow(_Ch, _Dflt));
- }
- __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
- virtual const _Elem * do_narrow(const _Elem *_First,
- const _Elem *_Last, char _Dflt, char *_Dest) const
- {
-
- return _Do_narrow_s(_First, _Last, _Dflt, _Dest, _Last - _First);
- }
- virtual const _Elem * _Do_narrow_s(const _Elem *_First,
- const _Elem *_Last, char _Dflt,
- char *_Dest,
- size_t _Dest_size) const
- {
- ;
- ;
- { if (!(_Dest_size >= (size_t)(_Last - _First))) { ((void)0); ::_invalid_parameter_noinfo(); } };
- for (; _First != _Last; ++_First, ++_Dest)
- *_Dest = _Donarrow(*_First, _Dflt);
- return (_First);
- }
-private:
- _Locinfo::_Ctypevec _Ctype;
- _Locinfo::_Cvtvec _Cvt;
- };
-
-template<class _Elem>
- locale::id ctype<_Elem>::id;
-
-template<> class ctype<char>
- : public ctype_base
- {
- typedef ctype<char> _Myt;
-public:
- typedef char _Elem;
- typedef _Elem char_type;
- bool is(mask _Maskval, _Elem _Ch) const
- {
- return ((_Ctype._Table[(unsigned char)_Ch] & _Maskval) != 0);
- }
- const _Elem * is(const _Elem *_First,
- const _Elem *_Last, mask *_Dest) const
- {
- ;
- ;
- for (; _First != _Last; ++_First, ++_Dest)
- *_Dest = _Ctype._Table[(unsigned char)*_First];
- return (_First);
- }
- const _Elem * scan_is(mask _Maskval,
- const _Elem *_First, const _Elem *_Last) const
- {
- ;
- for (; _First != _Last && !is(_Maskval, *_First); ++_First)
- ;
- return (_First);
- }
- const _Elem * scan_not(mask _Maskval,
- const _Elem *_First, const _Elem *_Last) const
- {
- ;
- for (; _First != _Last && is(_Maskval, *_First); ++_First)
- ;
- return (_First);
- }
- _Elem tolower(_Elem _Ch) const
- {
- return (do_tolower(_Ch));
- }
- const _Elem * tolower(_Elem *_First, const _Elem *_Last) const
- {
- return (do_tolower(_First, _Last));
- }
- _Elem toupper(_Elem _Ch) const
- {
- return (do_toupper(_Ch));
- }
- const _Elem * toupper(_Elem *_First, const _Elem *_Last) const
- {
- return (do_toupper(_First, _Last));
- }
- _Elem widen(char _Byte) const
- {
- return (do_widen(_Byte));
- }
- __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
- const _Elem * widen(const char *_First, const char *_Last,
- _Elem *_Dest) const
- {
-
-#pragma warning(push)
-#pragma warning(disable:4996)
- return (do_widen(_First, _Last, _Dest));
-#pragma warning(pop)
- }
- const _Elem * _Widen_s(const char *_First, const char *_Last,
- _Elem *_Dest, size_t _Dest_size) const
- {
- return (_Do_widen_s(_First, _Last, _Dest, _Dest_size));
- }
- _Elem narrow(_Elem _Ch, char _Dflt = '\0') const
- {
- return (do_narrow(_Ch, _Dflt));
- }
- __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
- const _Elem * narrow(const _Elem *_First, const _Elem *_Last,
- char _Dflt, char *_Dest) const
- {
-
-#pragma warning(push)
-#pragma warning(disable:4996)
- return (do_narrow(_First, _Last, _Dflt, _Dest));
-#pragma warning(pop)
- }
- const _Elem * _Narrow_s(const _Elem *_First, const _Elem *_Last,
- char _Dflt, char *_Dest,
- size_t _Dest_size) const
- {
- return (_Do_narrow_s(_First, _Last, _Dflt, _Dest, _Dest_size));
- }
- static locale::id& __cdecl _Id_func();
- static locale::id id;
- explicit ctype(const mask *_Table = 0,
- bool _Deletetable = false,
- size_t _Refs = 0)
- : ctype_base(_Refs)
- {
- { _Locinfo _Lobj;
- _Init(_Lobj);
- }
- if (_Table != 0)
- {
- _Tidy();
- _Ctype._Table = _Table;
- _Ctype._Delfl = _Deletetable ? -1 : 0;
- }
- }
- ctype(const _Locinfo& _Lobj, size_t _Refs = 0)
- : ctype_base(_Refs)
- {
- _Init(_Lobj);
- }
- static size_t __cdecl _Getcat(const locale::facet **_Ppf = 0)
- {
- if (_Ppf != 0 && *_Ppf == 0)
- *_Ppf = new ctype<_Elem>;
- return (2);
- }
- static const size_t table_size = 1 << 8;
-protected:
- virtual ~ctype()
- {
- _Tidy();
- }
-protected:
- void _Init(const _Locinfo& _Lobj)
- {
- _Ctype = _Lobj._Getctype();
- }
- void _Tidy()
- {
- if (0 < _Ctype._Delfl)
- free((void *)_Ctype._Table);
- else if (_Ctype._Delfl < 0)
- delete[] (void *)_Ctype._Table;
- }
- virtual _Elem do_tolower(_Elem _Ch) const
- {
- return ((_Elem)_Tolower((unsigned char)_Ch, &_Ctype));
- }
- virtual const _Elem * do_tolower(_Elem *_First,
- const _Elem *_Last) const
- {
- ;
- for (; _First != _Last; ++_First)
- *_First = (_Elem)_Tolower((unsigned char)*_First, &_Ctype);
- return ((const _Elem *)_First);
- }
- virtual _Elem do_toupper(_Elem _Ch) const
- {
- return ((_Elem)_Toupper((unsigned char)_Ch, &_Ctype));
- }
- virtual const _Elem * do_toupper(_Elem *_First,
- const _Elem *_Last) const
- {
- ;
- for (; _First != _Last; ++_First)
- *_First = (_Elem)_Toupper((unsigned char)*_First, &_Ctype);
- return ((const _Elem *)_First);
- }
- virtual _Elem do_widen(char _Byte) const
- {
- return (_Byte);
- }
- __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
- virtual const _Elem * do_widen(const char *_First,
- const char *_Last, _Elem *_Dest) const
- {
-
- return _Do_widen_s(_First, _Last, _Dest, _Last - _First);
- }
- virtual const _Elem * _Do_widen_s(const char *_First,
- const char *_Last, _Elem *_Dest, size_t _Dest_size) const
- {
- ;
- ;
- { if (!(_Dest_size >= (size_t)(_Last - _First))) { ((void)0); ::_invalid_parameter_noinfo(); } };
- ::memcpy_s((_Dest), (_Dest_size), (_First), (_Last - _First));
- return (_Last);
- }
- virtual _Elem do_narrow(_Elem _Ch, char) const
- {
- return (_Ch);
- }
- __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
- virtual const _Elem * do_narrow(const _Elem *_First,
- const _Elem *_Last, char _Dflt,
- char *_Dest) const
- {
-
- return _Do_narrow_s(_First, _Last, _Dflt, _Dest, _Last - _First);
- }
- virtual const _Elem * _Do_narrow_s(const _Elem *_First,
- const _Elem *_Last, char, char *_Dest,
- size_t _Dest_size) const
- {
- ;
- ;
- { if (!(_Dest_size >= (size_t)(_Last - _First))) { ((void)0); ::_invalid_parameter_noinfo(); } };
- ::memcpy_s((_Dest), (_Dest_size), (_First), (_Last - _First));
- return (_Last);
- }
- const mask * table() const throw ()
- {
- return (_Ctype._Table);
- }
- static const mask *__cdecl classic_table() throw ()
- {
- const _Myt& _Ctype_fac = use_facet<_Myt >(locale::classic());
- return (_Ctype_fac.table());
- }
-private:
- _Locinfo::_Ctypevec _Ctype;
- };
-
-template<> class ctype<wchar_t>
- : public ctype_base
- {
- typedef ctype<wchar_t> _Myt;
-public:
- typedef wchar_t _Elem;
- typedef _Elem char_type;
- bool is(mask _Maskval, _Elem _Ch) const
- {
- return (do_is(_Maskval, _Ch));
- }
- const _Elem * is(const _Elem *_First, const _Elem *_Last,
- mask *_Dest) const
- {
- return (do_is(_First, _Last, _Dest));
- }
- const _Elem * scan_is(mask _Maskval, const _Elem *_First,
- const _Elem *_Last) const
- {
- return (do_scan_is(_Maskval, _First, _Last));
- }
- const _Elem * scan_not(mask _Maskval, const _Elem *_First,
- const _Elem *_Last) const
- {
- return (do_scan_not(_Maskval, _First, _Last));
- }
- _Elem tolower(_Elem _Ch) const
- {
- return (do_tolower(_Ch));
- }
- const _Elem * tolower(_Elem *_First, const _Elem *_Last) const
- {
- return (do_tolower(_First, _Last));
- }
- _Elem toupper(_Elem _Ch) const
- {
- return (do_toupper(_Ch));
- }
- const _Elem * toupper(_Elem *_First, const _Elem *_Last) const
- {
- return (do_toupper(_First, _Last));
- }
- _Elem widen(char _Byte) const
- {
- return (do_widen(_Byte));
- }
- __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
- const char * widen(const char *_First, const char *_Last,
- _Elem *_Dest) const
- {
-
-#pragma warning(push)
-#pragma warning(disable:4996)
- return (do_widen(_First, _Last, _Dest));
-#pragma warning(pop)
- }
- const char * _Widen_s(const char *_First, const char *_Last,
- _Elem *_Dest, size_t _Dest_size) const
- {
- return (_Do_widen_s(_First, _Last, _Dest, _Dest_size));
- }
- char narrow(_Elem _Ch, char _Dflt = '\0') const
- {
- return (do_narrow(_Ch, _Dflt));
- }
- __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
- const _Elem * narrow(const _Elem *_First, const _Elem *_Last,
- char _Dflt, char *_Dest) const
- {
-
-#pragma warning(push)
-#pragma warning(disable:4996)
- return (do_narrow(_First, _Last, _Dflt, _Dest));
-#pragma warning(pop)
- }
- const _Elem * _Narrow_s(const _Elem *_First, const _Elem *_Last,
- char _Dflt, char *_Dest,
- size_t _Dest_size) const
- {
- return (_Do_narrow_s(_First, _Last, _Dflt, _Dest, _Dest_size));
- }
- static locale::id& __cdecl _Id_func();
- static locale::id id;
- explicit ctype(size_t _Refs = 0)
- : ctype_base(_Refs)
- {
- { _Locinfo _Lobj;
- _Init(_Lobj);
- }
- }
- ctype(const _Locinfo& _Lobj, size_t _Refs = 0)
- : ctype_base(_Refs)
- {
- _Init(_Lobj);
- }
- static size_t __cdecl _Getcat(const locale::facet **_Ppf = 0)
- {
- if (_Ppf != 0 && *_Ppf == 0)
- *_Ppf = new ctype<_Elem>;
- return (2);
- }
-protected:
- virtual ~ctype()
- {
- if (_Ctype._Delfl)
- free((void *)_Ctype._Table);
- }
-protected:
- void _Init(const _Locinfo& _Lobj)
- {
- _Ctype = _Lobj._Getctype();
- _Cvt = _Lobj._Getcvt();
- }
- virtual bool do_is(mask _Maskval, _Elem _Ch) const
- {
- return ((::_Getwctype(_Ch, &_Ctype) & _Maskval) != 0);
- }
- virtual const wchar_t * do_is(const _Elem *_First,
- const _Elem *_Last, mask *_Dest) const
- {
- ;
- ;
- return (::_Getwctypes(_First, _Last, _Dest, &_Ctype));
- }
- virtual const _Elem * do_scan_is(mask _Maskval,
- const _Elem *_First, const _Elem *_Last) const
- {
- ;
- for (; _First != _Last && !is(_Maskval, *_First); ++_First)
- ;
- return (_First);
- }
- virtual const _Elem * do_scan_not(mask _Maskval,
- const _Elem *_First, const _Elem *_Last) const
- {
- ;
- for (; _First != _Last && is(_Maskval, *_First); ++_First)
- ;
- return (_First);
- }
- virtual _Elem do_tolower(_Elem _Ch) const
- {
- return (_Towlower(_Ch, &_Ctype));
- }
- virtual const _Elem * do_tolower(_Elem *_First,
- const _Elem *_Last) const
- {
- ;
- for (; _First != _Last; ++_First)
- *_First = _Towlower(*_First, &_Ctype);
- return ((const _Elem *)_First);
- }
- virtual _Elem do_toupper(_Elem _Ch) const
- {
- return (_Towupper(_Ch, &_Ctype));
- }
- virtual const _Elem * do_toupper(_Elem *_First,
- const _Elem *_Last) const
- {
- ;
- for (; _First != _Last; ++_First)
- *_First = _Towupper(*_First, &_Ctype);
- return ((const _Elem *)_First);
- }
- _Elem _Dowiden(char _Byte) const
- {
- mbstate_t _Mbst = {0};
- wchar_t _Wc;
- return (_Mbrtowc(&_Wc, &_Byte, 1, &_Mbst, &_Cvt) < 0
- ? (wchar_t)(wint_t)(0xFFFF) : _Wc);
- }
- virtual _Elem do_widen(char _Byte) const
- {
- return (_Dowiden(_Byte));
- }
- __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
- virtual const char * do_widen(const char *_First,
- const char *_Last, _Elem *_Dest) const
- {
-
- return _Do_widen_s(_First, _Last, _Dest, _Last - _First);
- }
- virtual const char * _Do_widen_s(const char *_First,
- const char *_Last, _Elem *_Dest, size_t _Dest_size) const
- {
- ;
- ;
- { if (!(_Dest_size >= (size_t)(_Last - _First))) { ((void)0); ::_invalid_parameter_noinfo(); } };
- for (; _First != _Last; ++_First, ++_Dest)
- *_Dest = _Dowiden(*_First);
- return (_First);
- }
- char _Donarrow(_Elem _Ch, char _Dflt) const
- {
- char _Buf[5];
- mbstate_t _Mbst = {0};
- return (_Wcrtomb(_Buf, _Ch, &_Mbst, &_Cvt) != 1
- ? _Dflt : _Buf[0]);
- }
- virtual char do_narrow(_Elem _Ch, char _Dflt) const
- {
- return (_Donarrow(_Ch, _Dflt));
- }
- __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
- virtual const _Elem * do_narrow(const _Elem *_First,
- const _Elem *_Last, char _Dflt,
- char *_Dest) const
- {
-
- return _Do_narrow_s(_First, _Last, _Dflt, _Dest, _Last - _First);
- }
- virtual const _Elem * _Do_narrow_s(const _Elem *_First,
- const _Elem *_Last, char _Dflt,
- char *_Dest,
- size_t _Dest_size) const
- {
- ;
- ;
- { if (!(_Dest_size >= (size_t)(_Last - _First))) { ((void)0); ::_invalid_parameter_noinfo(); } };
- for (; _First != _Last; ++_First, ++_Dest)
- *_Dest = _Donarrow(*_First, _Dflt);
- return (_First);
- }
-private:
- _Locinfo::_Ctypevec _Ctype;
- _Locinfo::_Cvtvec _Cvt;
- };
-
-template<> class ctype<unsigned short>
- : public ctype_base
- {
- typedef ctype<unsigned short> _Myt;
-public:
- typedef unsigned short _Elem;
- typedef _Elem char_type;
- bool is(mask _Maskval, _Elem _Ch) const
- {
- return (do_is(_Maskval, _Ch));
- }
- const _Elem * is(const _Elem *_First, const _Elem *_Last,
- mask *_Dest) const
- {
- return (do_is(_First, _Last, _Dest));
- }
- const _Elem * scan_is(mask _Maskval, const _Elem *_First,
- const _Elem *_Last) const
- {
- return (do_scan_is(_Maskval, _First, _Last));
- }
- const _Elem * scan_not(mask _Maskval, const _Elem *_First,
- const _Elem *_Last) const
- {
- return (do_scan_not(_Maskval, _First, _Last));
- }
- _Elem tolower(_Elem _Ch) const
- {
- return (do_tolower(_Ch));
- }
- const _Elem * tolower(_Elem *_First, const _Elem *_Last) const
- {
- return (do_tolower(_First, _Last));
- }
- _Elem toupper(_Elem _Ch) const
- {
- return (do_toupper(_Ch));
- }
- const _Elem * toupper(_Elem *_First, const _Elem *_Last) const
- {
- return (do_toupper(_First, _Last));
- }
- _Elem widen(char _Byte) const
- {
- return (do_widen(_Byte));
- }
- __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
- const char * widen(const char *_First, const char *_Last,
- _Elem *_Dest) const
- {
-
-#pragma warning(push)
-#pragma warning(disable:4996)
- return (do_widen(_First, _Last, _Dest));
-#pragma warning(pop)
- }
- const char * _Widen_s(const char *_First, const char *_Last,
- _Elem *_Dest, size_t _Dest_size) const
- {
- return (_Do_widen_s(_First, _Last, _Dest, _Dest_size));
- }
- char narrow(_Elem _Ch, char _Dflt = '\0') const
- {
- return (do_narrow(_Ch, _Dflt));
- }
- __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
- const _Elem * narrow(const _Elem *_First, const _Elem *_Last,
- char _Dflt, char *_Dest) const
- {
-
-#pragma warning(push)
-#pragma warning(disable:4996)
- return (do_narrow(_First, _Last, _Dflt, _Dest));
-#pragma warning(pop)
- }
- const _Elem * _Narrow_s(const _Elem *_First, const _Elem *_Last,
- char _Dflt, char *_Dest,
- size_t _Dest_size) const
- {
- return (_Do_narrow_s(_First, _Last, _Dflt, _Dest, _Dest_size));
- }
- static locale::id& __cdecl _Id_func();
- static locale::id id;
- explicit ctype(size_t _Refs = 0)
- : ctype_base(_Refs)
- {
- { _Locinfo _Lobj;
- _Init(_Lobj);
- }
- }
- ctype(const _Locinfo& _Lobj, size_t _Refs = 0)
- : ctype_base(_Refs)
- {
- _Init(_Lobj);
- }
- static size_t __cdecl _Getcat(const locale::facet **_Ppf = 0)
- {
- if (_Ppf != 0 && *_Ppf == 0)
- *_Ppf = new ctype<_Elem>;
- return (2);
- }
-protected:
- virtual ~ctype()
- {
- if (_Ctype._Delfl)
- free((void *)_Ctype._Table);
- }
-protected:
- ctype(const char *_Locname, size_t _Refs = 0)
- : ctype_base(_Refs)
- {
- { _Locinfo _Lobj(_Locname);
- _Init(_Lobj);
- }
- }
- void _Init(const _Locinfo& _Lobj)
- {
- _Ctype = _Lobj._Getctype();
- _Cvt = _Lobj._Getcvt();
- }
- virtual bool do_is(mask _Maskval, _Elem _Ch) const
- {
- return ((::_Getwctype(_Ch, &_Ctype) & _Maskval) != 0);
- }
- virtual const _Elem * do_is(const _Elem *_First,
- const _Elem *_Last, mask *_Dest) const
- {
- ;
- ;
- return ((const _Elem *)::_Getwctypes((const wchar_t *)_First,
- (const wchar_t *)_Last, _Dest, &_Ctype));
- }
- virtual const _Elem * do_scan_is(mask _Maskval,
- const _Elem *_First, const _Elem *_Last) const
- {
- ;
- for (; _First != _Last && !is(_Maskval, *_First); ++_First)
- ;
- return (_First);
- }
- virtual const _Elem * do_scan_not(mask _Maskval,
- const _Elem *_First, const _Elem *_Last) const
- {
- ;
- for (; _First != _Last && is(_Maskval, *_First); ++_First)
- ;
- return (_First);
- }
- virtual _Elem do_tolower(_Elem _Ch) const
- {
- return (_Towlower(_Ch, &_Ctype));
- }
- virtual const _Elem * do_tolower(_Elem *_First,
- const _Elem *_Last) const
- {
- ;
- for (; _First != _Last; ++_First)
- *_First = _Towlower(*_First, &_Ctype);
- return ((const _Elem *)_First);
- }
- virtual _Elem do_toupper(_Elem _Ch) const
- {
- return (_Towupper(_Ch, &_Ctype));
- }
- virtual const _Elem * do_toupper(_Elem *_First,
- const _Elem *_Last) const
- {
- ;
- for (; _First != _Last; ++_First)
- *_First = _Towupper(*_First, &_Ctype);
- return ((const _Elem *)_First);
- }
- _Elem _Dowiden(char _Byte) const
- {
- mbstate_t _Mbst = {0};
- unsigned short _Wc;
- return (_Mbrtowc((wchar_t *)&_Wc, &_Byte, 1, &_Mbst, &_Cvt) < 0
- ? (unsigned short)(wint_t)(0xFFFF) : _Wc);
- }
- virtual _Elem do_widen(char _Byte) const
- {
- return (_Dowiden(_Byte));
- }
- __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
- virtual const char * do_widen(const char *_First,
- const char *_Last, _Elem *_Dest) const
- {
-
- return _Do_widen_s(_First, _Last, _Dest, _Last - _First);
- }
- virtual const char * _Do_widen_s(const char *_First,
- const char *_Last, _Elem *_Dest, size_t _Dest_size) const
- {
- ;
- ;
- { if (!(_Dest_size >= (size_t)(_Last - _First))) { ((void)0); ::_invalid_parameter_noinfo(); } };
- for (; _First != _Last; ++_First, ++_Dest)
- *_Dest = _Dowiden(*_First);
- return (_First);
- }
- char _Donarrow(_Elem _Ch, char _Dflt) const
- {
- char _Buf[5];
- mbstate_t _Mbst = {0};
- return (_Wcrtomb(_Buf, _Ch, &_Mbst, &_Cvt) != 1
- ? _Dflt : _Buf[0]);
- }
- virtual char do_narrow(_Elem _Ch, char _Dflt) const
- {
- return (_Donarrow(_Ch, _Dflt));
- }
- __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
- virtual const _Elem * do_narrow(const _Elem *_First,
- const _Elem *_Last, char _Dflt, char *_Dest) const
- {
-
- return _Do_narrow_s(_First, _Last, _Dflt, _Dest, _Last - _First);
- }
- virtual const _Elem * _Do_narrow_s(const _Elem *_First,
- const _Elem *_Last, char _Dflt,
- char *_Dest,
- size_t _Dest_size) const
- {
- ;
- ;
- { if (!(_Dest_size >= (size_t)(_Last - _First))) { ((void)0); ::_invalid_parameter_noinfo(); } };
- for (; _First != _Last; ++_First, ++_Dest)
- *_Dest = _Donarrow(*_First, _Dflt);
- return (_First);
- }
-private:
- _Locinfo::_Ctypevec _Ctype;
- _Locinfo::_Cvtvec _Cvt;
- };
-
-template<class _Elem>
- class ctype_byname
- : public ctype<_Elem>
- {
-public:
- explicit ctype_byname(const char *_Locname, size_t _Refs = 0)
- : ctype<_Elem>(_Locname, _Refs)
- {
- }
-protected:
- virtual ~ctype_byname()
- {
- }
- };
-
-template<> class ctype_byname<char>
- : public ctype<char>
- {
-public:
- explicit ctype_byname(const char *_Locname, size_t _Refs = 0)
- : ctype<char>(_Locname, _Refs)
- {
- }
-protected:
- virtual ~ctype_byname()
- {
- }
- };
-
-}
-#pragma warning(pop)
-#pragma pack(pop)
@@ -132238,7 +185640,6 @@
-#pragma once
@@ -132267,210 +185668,28 @@
-#pragma pack(push,8)
-#pragma warning(push,3)
-#pragma warning(disable:4412)
-namespace std {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-template<class _Dummy>
- class _Iosb
- {
-public:
- enum _Dummy_enum {_Dummy_enum_val = 1};
- enum _Fmtflags
- {
- _Fmtmask = 0xffff, _Fmtzero = 0};
- static const _Fmtflags skipws = (_Fmtflags)0x0001;
- static const _Fmtflags unitbuf = (_Fmtflags)0x0002;
- static const _Fmtflags uppercase = (_Fmtflags)0x0004;
- static const _Fmtflags showbase = (_Fmtflags)0x0008;
- static const _Fmtflags showpoint = (_Fmtflags)0x0010;
- static const _Fmtflags showpos = (_Fmtflags)0x0020;
- static const _Fmtflags left = (_Fmtflags)0x0040;
- static const _Fmtflags right = (_Fmtflags)0x0080;
- static const _Fmtflags internal = (_Fmtflags)0x0100;
- static const _Fmtflags dec = (_Fmtflags)0x0200;
- static const _Fmtflags oct = (_Fmtflags)0x0400;
- static const _Fmtflags hex = (_Fmtflags)0x0800;
- static const _Fmtflags scientific = (_Fmtflags)0x1000;
- static const _Fmtflags fixed = (_Fmtflags)0x2000;
- static const _Fmtflags boolalpha = (_Fmtflags)0x4000;
- static const _Fmtflags _Stdio = (_Fmtflags)0x8000;
- static const _Fmtflags adjustfield = (_Fmtflags)(0x0040
- | 0x0080 | 0x0100);
- static const _Fmtflags basefield = (_Fmtflags)(0x0200
- | 0x0400 | 0x0800);
- static const _Fmtflags floatfield = (_Fmtflags)(0x1000
- | 0x2000);
- enum _Iostate
- {
- _Statmask = 0x17};
- static const _Iostate goodbit = (_Iostate)0x0;
- static const _Iostate eofbit = (_Iostate)0x1;
- static const _Iostate failbit = (_Iostate)0x2;
- static const _Iostate badbit = (_Iostate)0x4;
- static const _Iostate _Hardfail = (_Iostate)0x10;
- enum _Openmode
- {
- _Openmask = 0xff};
- static const _Openmode in = (_Openmode)0x01;
- static const _Openmode out = (_Openmode)0x02;
- static const _Openmode ate = (_Openmode)0x04;
- static const _Openmode app = (_Openmode)0x08;
- static const _Openmode trunc = (_Openmode)0x10;
- static const _Openmode _Nocreate = (_Openmode)0x40;
- static const _Openmode _Noreplace = (_Openmode)0x80;
- static const _Openmode binary = (_Openmode)0x20;
- enum _Seekdir
- {
- _Seekmask = 0x3};
- static const _Seekdir beg = (_Seekdir)0;
- static const _Seekdir cur = (_Seekdir)1;
- static const _Seekdir end = (_Seekdir)2;
- enum
- {
- _Openprot = 0x40};
- };
-template<class _Dummy>
- const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::skipws;
-template<class _Dummy>
- const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::unitbuf;
-template<class _Dummy>
- const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::uppercase;
-template<class _Dummy>
- const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::showbase;
-template<class _Dummy>
- const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::showpoint;
-template<class _Dummy>
- const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::showpos;
-template<class _Dummy>
- const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::left;
-template<class _Dummy>
- const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::right;
-template<class _Dummy>
- const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::internal;
-template<class _Dummy>
- const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::dec;
-template<class _Dummy>
- const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::oct;
-template<class _Dummy>
- const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::hex;
-template<class _Dummy>
- const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::scientific;
-template<class _Dummy>
- const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::fixed;
-template<class _Dummy>
- const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::boolalpha;
-template<class _Dummy>
- const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::_Stdio;
-template<class _Dummy>
- const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::adjustfield;
-template<class _Dummy>
- const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::basefield;
-template<class _Dummy>
- const typename _Iosb<_Dummy>::_Fmtflags _Iosb<_Dummy>::floatfield;
-template<class _Dummy>
- const typename _Iosb<_Dummy>::_Iostate _Iosb<_Dummy>::goodbit;
-template<class _Dummy>
- const typename _Iosb<_Dummy>::_Iostate _Iosb<_Dummy>::eofbit;
-template<class _Dummy>
- const typename _Iosb<_Dummy>::_Iostate _Iosb<_Dummy>::failbit;
-template<class _Dummy>
- const typename _Iosb<_Dummy>::_Iostate _Iosb<_Dummy>::badbit;
-template<class _Dummy>
- const typename _Iosb<_Dummy>::_Iostate _Iosb<_Dummy>::_Hardfail;
-template<class _Dummy>
- const typename _Iosb<_Dummy>::_Openmode _Iosb<_Dummy>::in;
-template<class _Dummy>
- const typename _Iosb<_Dummy>::_Openmode _Iosb<_Dummy>::out;
-template<class _Dummy>
- const typename _Iosb<_Dummy>::_Openmode _Iosb<_Dummy>::ate;
-template<class _Dummy>
- const typename _Iosb<_Dummy>::_Openmode _Iosb<_Dummy>::app;
-template<class _Dummy>
- const typename _Iosb<_Dummy>::_Openmode _Iosb<_Dummy>::trunc;
-template<class _Dummy>
- const typename _Iosb<_Dummy>::_Openmode _Iosb<_Dummy>::_Nocreate;
-template<class _Dummy>
- const typename _Iosb<_Dummy>::_Openmode _Iosb<_Dummy>::_Noreplace;
-template<class _Dummy>
- const typename _Iosb<_Dummy>::_Openmode _Iosb<_Dummy>::binary;
-template<class _Dummy>
- const typename _Iosb<_Dummy>::_Seekdir _Iosb<_Dummy>::beg;
-template<class _Dummy>
- const typename _Iosb<_Dummy>::_Seekdir _Iosb<_Dummy>::cur;
-template<class _Dummy>
- const typename _Iosb<_Dummy>::_Seekdir _Iosb<_Dummy>::end;
-
-class ios_base
- : public _Iosb<int>
- {
-public:
- typedef int fmtflags;
- typedef int iostate;
- typedef int openmode;
- typedef int seekdir;
- typedef std::streamoff streamoff;
- typedef std::streampos streampos;
- enum event
- {
- erase_event, imbue_event, copyfmt_event};
- typedef void (__cdecl *event_callback)(event, ios_base&, int);
- typedef unsigned int io_state, open_mode, seek_dir;
-
- class failure
- : public runtime_error
- {
- public:
- explicit failure(const string &_Message)
- : runtime_error(_Message)
- {
- }
- virtual ~failure() throw ()
- {
- }
@@ -132481,398 +185700,84 @@
- };
-
- class Init
- {
- public:
- Init()
- {
- _Init_ctor(this);
- }
- ~Init()
- {
- _Init_dtor(this);
- }
- private:
- static void __cdecl _Init_ctor(Init *);
- static void __cdecl _Init_dtor(Init *);
- static int& __cdecl _Init_cnt_func();
- static int _Init_cnt;
- };
- ios_base& operator=(const ios_base& _Right)
- {
- if (this != &_Right)
- {
- _Mystate = _Right._Mystate;
- copyfmt(_Right);
- }
- return (*this);
- }
- operator void *() const
- {
- return (fail() ? 0 : (void *)this);
- }
- bool operator!() const
- {
- return (fail());
- }
- void clear(iostate _State, bool _Reraise)
- {
- _Mystate = (iostate)(_State & _Statmask);
- if ((_Mystate & _Except) == 0)
- ;
- else if (_Reraise)
- throw;
- else if (_Mystate & _Except & badbit)
- throw failure("ios_base::badbit set");
- else if (_Mystate & _Except & failbit)
- throw failure("ios_base::failbit set");
- else
- throw failure("ios_base::eofbit set");
- }
- void clear(iostate _State = goodbit)
- {
- clear(_State, false);
- }
- void clear(io_state _State)
- {
- clear((iostate)_State);
- }
- iostate rdstate() const
- {
- return (_Mystate);
- }
- void setstate(iostate _State, bool _Exreraise)
- {
- if (_State != goodbit)
- clear((iostate)((int)rdstate() | (int)_State), _Exreraise);
- }
- void setstate(iostate _State)
- {
- if (_State != goodbit)
- clear((iostate)((int)rdstate() | (int)_State), false);
- }
- void setstate(io_state _State)
- {
- setstate((iostate)_State);
- }
- bool good() const
- {
- return (rdstate() == goodbit);
- }
- bool eof() const
- {
- return ((int)rdstate() & (int)eofbit);
- }
- bool fail() const
- {
- return (((int)rdstate()
- & ((int)badbit | (int)failbit)) != 0);
- }
- bool bad() const
- {
- return (((int)rdstate() & (int)badbit) != 0);
- }
-
-
-
- iostate exceptions() const
- {
- return (_Except);
- }
- void exceptions(iostate _Newexcept)
- {
- _Except = (iostate)((int)_Newexcept & (int)_Statmask);
- clear(_Mystate);
- }
- void exceptions(io_state _State)
- {
- exceptions((iostate)_State);
- }
- fmtflags flags() const
- {
- return (_Fmtfl);
- }
- fmtflags flags(fmtflags _Newfmtflags)
- {
- fmtflags _Oldfmtflags = _Fmtfl;
- _Fmtfl = (fmtflags)((int)_Newfmtflags & (int)_Fmtmask);
- return (_Oldfmtflags);
- }
- fmtflags setf(fmtflags _Newfmtflags)
- {
- ios_base::fmtflags _Oldfmtflags = _Fmtfl;
- _Fmtfl = (fmtflags)((int)_Fmtfl
- | (int)_Newfmtflags & (int)_Fmtmask);
- return (_Oldfmtflags);
- }
- fmtflags setf(fmtflags _Newfmtflags, fmtflags _Mask)
- {
- ios_base::fmtflags _Oldfmtflags = _Fmtfl;
- _Fmtfl = (fmtflags)(((int)_Fmtfl & (int)~_Mask)
- | ((int)_Newfmtflags & (int)_Mask & (int)_Fmtmask));
- return (_Oldfmtflags);
- }
- void unsetf(fmtflags _Mask)
- {
- _Fmtfl = (fmtflags)((int)_Fmtfl & (int)~_Mask);
- }
- streamsize precision() const
- {
- return (_Prec);
- }
- streamsize precision(streamsize _Newprecision)
- {
- streamsize _Oldprecision = _Prec;
- _Prec = _Newprecision;
- return (_Oldprecision);
- }
- streamsize width() const
- {
- return (_Wide);
- }
- streamsize width(streamsize _Newwidth)
- {
- streamsize _Oldwidth = _Wide;
- _Wide = _Newwidth;
- return (_Oldwidth);
- }
- locale getloc() const
- {
- return (*_Ploc);
- }
- locale imbue(const locale& _Loc)
- {
- locale _Oldlocale = *_Ploc;
- *_Ploc = _Loc;
- _Callfns(imbue_event);
- return (_Oldlocale);
- }
- static int __cdecl xalloc()
- {
- { ::std:: _Lockit _Lock(2);
- return (_Index++);
- }
- }
- long& iword(int _Idx)
- {
- return (_Findarr(_Idx)._Lo);
- }
- void *& pword(int _Idx)
- {
- return (_Findarr(_Idx)._Vp);
- }
- void register_callback(event_callback _Pfn, int _Idx)
- {
- _Calls = new _Fnarray(_Idx, _Pfn, _Calls);
- }
- ios_base& copyfmt(const ios_base& _Other)
- {
- if (this != &_Other)
- {
- _Tidy();
- *_Ploc = *_Other._Ploc;
- _Fmtfl = _Other._Fmtfl;
- _Prec = _Other._Prec;
- _Wide = _Other._Wide;
- _Iosarray *_Ptr = _Other._Arr;
- for (_Arr = 0; _Ptr != 0; _Ptr = _Ptr->_Next)
- if (_Ptr->_Lo != 0 || _Ptr->_Vp != 0)
- {
- iword(_Ptr->_Index) = _Ptr->_Lo;
- pword(_Ptr->_Index) = _Ptr->_Vp;
- }
- for (_Fnarray *_Q = _Other._Calls; _Q != 0; _Q = _Q->_Next)
- register_callback(_Q->_Pfn, _Q->_Index);
- _Callfns(copyfmt_event);
- exceptions(_Other._Except);
- }
- return (*this);
- }
- virtual ~ios_base()
- {
- _Ios_base_dtor(this);
- }
- static bool __cdecl sync_with_stdio(bool _Newsync = true)
- {
- { ::std:: _Lockit _Lock(2);
- const bool _Oldsync = _Sync;
- _Sync = _Newsync;
- return (_Oldsync);
- }
- }
- static void __cdecl _Addstd(ios_base *);
- size_t _Stdstr;
-protected:
- ios_base()
- {
- }
- void _Init()
- {
- _Ploc = 0;
- _Except = goodbit;
- _Fmtfl = skipws | dec;
- _Prec = 6;
- _Wide = 0;
- _Arr = 0;
- _Calls = 0;
- clear(goodbit);
- _Ploc = new locale;
- }
-private:
-
- struct _Iosarray
- {
- public:
- _Iosarray(int _Idx, _Iosarray *_Link)
- : _Next(_Link), _Index(_Idx), _Lo(0), _Vp(0)
- {
- }
- _Iosarray *_Next;
- int _Index;
- long _Lo;
- void *_Vp;
- };
-
- struct _Fnarray
- {
- _Fnarray(int _Idx, event_callback _Pnew, _Fnarray *_Link)
- : _Next(_Link), _Index(_Idx), _Pfn(_Pnew)
- {
- }
- _Fnarray *_Next;
- int _Index;
- event_callback _Pfn;
- };
- void _Callfns(event _Ev)
- {
- for (_Fnarray *_Ptr = _Calls; _Ptr != 0; _Ptr = _Ptr->_Next)
- (*_Ptr->_Pfn)(_Ev, *this, _Ptr->_Index);
- }
- _Iosarray& _Findarr(int _Idx)
- {
- _Iosarray *_Ptr, *_Q;
- for (_Ptr = _Arr, _Q = 0; _Ptr != 0; _Ptr = _Ptr->_Next)
- if (_Ptr->_Index == _Idx)
- return (*_Ptr);
- else if (_Q == 0 && _Ptr->_Lo == 0 && _Ptr->_Vp == 0)
- _Q = _Ptr;
- if (_Q != 0)
- {
- _Q->_Index = _Idx;
- return (*_Q);
- }
- _Arr = new _Iosarray(_Idx, _Arr);
- return (*_Arr);
- }
- void __cdecl _Tidy()
- {
- _Callfns(erase_event);
- _Iosarray *_Q1, *_Q2;
- for (_Q1 = _Arr; _Q1 != 0; _Q1 = _Q2)
- _Q2 = _Q1->_Next, delete (_Q1);
- _Arr = 0;
- _Fnarray *_Q3, *_Q4;
- for (_Q3 = _Calls; _Q3 != 0; _Q3 = _Q4)
- _Q4 = _Q3->_Next, delete (_Q3);
- _Calls = 0;
- }
- static void __cdecl _Ios_base_dtor(ios_base *);
- iostate _Mystate;
- iostate _Except;
- fmtflags _Fmtfl;
- streamsize _Prec;
- streamsize _Wide;
- _Iosarray *_Arr;
- _Fnarray *_Calls;
- locale *_Ploc;
- static int _Index;
- static bool _Sync;
- static int& __cdecl _Index_func();
- static bool& __cdecl _Sync_func();
- };
-}
-#pragma warning(pop)
-#pragma pack(pop)
@@ -132885,432 +185790,76 @@
-#pragma pack(push,8)
-#pragma warning(push,3)
-namespace std {
-
-template<class _Elem,
- class _Traits>
- class basic_streambuf
- {
- basic_streambuf(const basic_streambuf<_Elem, _Traits>&);
- basic_streambuf<_Elem, _Traits>&
- operator=(const basic_streambuf<_Elem, _Traits>&);
-protected:
- basic_streambuf()
- : _Plocale(new(locale))
- {
- _Init();
- }
- basic_streambuf(_Uninitialized)
- {
- }
-public:
- typedef basic_streambuf<_Elem, _Traits> _Myt;
- typedef _Elem char_type;
- typedef _Traits traits_type;
- virtual ~basic_streambuf()
- {
- delete (_Plocale);
- }
- typedef typename _Traits::int_type int_type;
- typedef typename _Traits::pos_type pos_type;
- typedef typename _Traits::off_type off_type;
- pos_type pubseekoff(off_type _Off, ios_base::seekdir _Way,
- ios_base::openmode _Mode = ios_base::in | ios_base::out)
- {
- return (seekoff(_Off, _Way, _Mode));
- }
- pos_type pubseekoff(off_type _Off, ios_base::seek_dir _Way,
- ios_base::open_mode _Mode)
- {
- return (pubseekoff(_Off, (ios_base::seekdir)_Way,
- (ios_base::openmode)_Mode));
- }
- pos_type pubseekpos(pos_type _Pos,
- ios_base::openmode _Mode = ios_base::in | ios_base::out)
- {
- return (seekpos(_Pos, _Mode));
- }
- pos_type pubseekpos(pos_type _Pos, ios_base::open_mode _Mode)
- {
- return (seekpos(_Pos, (ios_base::openmode)_Mode));
- }
- _Myt *pubsetbuf(_Elem *_Buffer, streamsize _Count)
- {
- return (setbuf(_Buffer, _Count));
- }
- locale pubimbue(const locale &_Newlocale)
- {
- locale _Oldlocale = *_Plocale;
- imbue(_Newlocale);
- *_Plocale = _Newlocale;
- return (_Oldlocale);
- }
- locale getloc() const
- {
- return (*_Plocale);
- }
- streamsize in_avail()
- {
- streamsize _Res = _Gnavail();
- return (0 < _Res ? _Res : showmanyc());
- }
- int pubsync()
- {
- return (sync());
- }
- int_type sbumpc()
- {
- return (0 < _Gnavail()
- ? _Traits::to_int_type(*_Gninc()) : uflow());
- }
- int_type sgetc()
- {
- return (0 < _Gnavail()
- ? _Traits::to_int_type(*gptr()) : underflow());
- }
- streamsize _Sgetn_s(_Elem *_Ptr, size_t _Ptr_size, streamsize _Count)
- {
- return _Xsgetn_s(_Ptr, _Ptr_size, _Count);
- }
- __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
- streamsize sgetn(_Elem *_Ptr, streamsize _Count)
- {
-#pragma warning(push)
-#pragma warning(disable:4996)
- return xsgetn(_Ptr, _Count);
-#pragma warning(pop)
- }
- int_type snextc()
- {
- return (1 < _Gnavail()
- ? _Traits::to_int_type(*_Gnpreinc())
- : _Traits::eq_int_type(_Traits::eof(), sbumpc())
- ? _Traits::eof() : sgetc());
- }
- int_type sputbackc(_Elem _Ch)
- {
- return (gptr() != 0 && eback() < gptr()
- && _Traits::eq(_Ch, gptr()[-1])
- ? _Traits::to_int_type(*_Gndec())
- : pbackfail(_Traits::to_int_type(_Ch)));
- }
- void stossc()
- {
- if (0 < _Gnavail())
- _Gninc();
- else
- uflow();
- }
- int_type sungetc()
- {
- return (gptr() != 0 && eback() < gptr()
- ? _Traits::to_int_type(*_Gndec()) : pbackfail());
- }
- int_type sputc(_Elem _Ch)
- {
- return (0 < _Pnavail()
- ? _Traits::to_int_type(*_Pninc() = _Ch)
- : overflow(_Traits::to_int_type(_Ch)));
- }
- streamsize sputn(const _Elem *_Ptr, streamsize _Count)
- {
- return (xsputn(_Ptr, _Count));
- }
- void _Lock()
- {
- _Mylock._Lock();
- }
- void _Unlock()
- {
- _Mylock._Unlock();
- }
-protected:
- _Elem *eback() const
- {
- return (*_IGfirst);
- }
- _Elem *gptr() const
- {
- return (*_IGnext);
- }
- _Elem *pbase() const
- {
- return (*_IPfirst);
- }
- _Elem *pptr() const
- {
- return (*_IPnext);
- }
- _Elem *egptr() const
- {
- return (*_IGnext + *_IGcount);
- }
- void gbump(int _Off)
- {
- *_IGcount -= _Off;
- *_IGnext += _Off;
- }
- void setg(_Elem *_First, _Elem *_Next, _Elem *_Last)
- {
- *_IGfirst = _First;
- *_IGnext = _Next;
- *_IGcount = (int)(_Last - _Next);
- }
- _Elem *epptr() const
- {
- return (*_IPnext + *_IPcount);
- }
- _Elem *_Gndec()
- {
- ++*_IGcount;
- return (--*_IGnext);
- }
- _Elem *_Gninc()
- {
- --*_IGcount;
- return ((*_IGnext)++);
- }
- _Elem *_Gnpreinc()
- {
- --*_IGcount;
- return (++(*_IGnext));
- }
- streamsize _Gnavail() const
- {
- return (*_IGnext != 0 ? *_IGcount : 0);
- }
- void pbump(int _Off)
- {
- *_IPcount -= _Off;
- *_IPnext += _Off;
- }
- void setp(_Elem *_First, _Elem *_Last)
- {
- *_IPfirst = _First;
- *_IPnext = _First;
- *_IPcount = (int)(_Last - _First);
- }
- void setp(_Elem *_First, _Elem *_Next, _Elem *_Last)
- {
- *_IPfirst = _First;
- *_IPnext = _Next;
- *_IPcount = (int)(_Last - _Next);
- }
- _Elem *_Pninc()
- {
- --*_IPcount;
- return ((*_IPnext)++);
- }
- streamsize _Pnavail() const
- {
- return (*_IPnext != 0 ? *_IPcount : 0);
- }
- void _Init()
- {
- _IGfirst = &_Gfirst, _IPfirst = &_Pfirst;
- _IGnext = &_Gnext, _IPnext = &_Pnext;
- _IGcount = &_Gcount, _IPcount = &_Pcount;
- setp(0, 0), setg(0, 0, 0);
- }
- void _Init(_Elem **_Gf, _Elem **_Gn, int *_Gc,
- _Elem **_Pf, _Elem **_Pn, int *_Pc)
- {
- _IGfirst = _Gf, _IPfirst = _Pf;
- _IGnext = _Gn, _IPnext = _Pn;
- _IGcount = _Gc, _IPcount = _Pc;
- }
- virtual int_type overflow(int_type = _Traits::eof())
- {
- return (_Traits::eof());
- }
- virtual int_type pbackfail(int_type = _Traits::eof())
- {
- return (_Traits::eof());
- }
- virtual streamsize showmanyc()
- {
- return (0);
- }
- virtual int_type underflow()
- {
- return (_Traits::eof());
- }
- virtual int_type uflow()
- {
- return (_Traits::eq_int_type(_Traits::eof(), underflow())
- ? _Traits::eof() : _Traits::to_int_type(*_Gninc()));
- }
- __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
- virtual streamsize xsgetn(_Elem * _Ptr,
- streamsize _Count)
- {
-
- return _Xsgetn_s(_Ptr, (size_t)-1, _Count);
- }
- virtual streamsize _Xsgetn_s(_Elem * _Ptr,
- size_t _Ptr_size, streamsize _Count)
- {
- int_type _Meta;
- streamsize _Stream_size, _Size, _Copied;
- for (_Copied = 0; 0 < _Count; )
- if (0 < (_Stream_size = _Gnavail()))
- {
- _Size = _Stream_size;
- if (_Count < _Size)
- _Size = _Count;
- _Traits_helper::copy_s<_Traits>(_Ptr, _Ptr_size, gptr(), _Size);
- _Ptr += _Size;
- _Copied += _Size;
- _Count -= _Size;
- gbump((int)_Size);
- }
- else if (_Traits::eq_int_type(_Traits::eof(), _Meta = uflow()))
- break;
- else
- {
- *_Ptr++ = _Traits::to_char_type(_Meta);
- ++_Copied;
- --_Count;
- }
- return (_Copied);
- }
- virtual streamsize xsputn(const _Elem *_Ptr,
- streamsize _Count)
- {
- streamsize _Stream_size, _Size, _Copied;
- for (_Copied = 0; 0 < _Count; )
- if (0 < (_Stream_size = _Pnavail()))
- {
- _Size = _Stream_size;
- if (_Count < _Size)
- _Size = _Count;
- _Traits_helper::copy_s<_Traits>(pptr(), _Stream_size, _Ptr, _Size);
- _Ptr += _Size;
- _Copied += _Size;
- _Count -= _Size;
- pbump((int)_Size);
- }
- else if (_Traits::eq_int_type(_Traits::eof(),
- overflow(_Traits::to_int_type(*_Ptr))))
- break;
- else
- {
- ++_Ptr;
- ++_Copied;
- --_Count;
- }
- return (_Copied);
- }
- virtual pos_type seekoff(off_type, ios_base::seekdir,
- ios_base::openmode = ios_base::in | ios_base::out)
- {
- return (streampos(_BADOFF));
- }
- virtual pos_type seekpos(pos_type,
- ios_base::openmode = ios_base::in | ios_base::out)
- {
- return (streampos(_BADOFF));
- }
- virtual _Myt * setbuf(_Elem *, streamsize)
- {
- return (this);
- }
- virtual int sync()
- {
- return (0);
- }
- virtual void imbue(const locale&)
- {
- }
-private:
- _Mutex _Mylock;
- _Elem *_Gfirst;
- _Elem *_Pfirst;
- _Elem **_IGfirst;
- _Elem **_IPfirst;
- _Elem *_Gnext;
- _Elem *_Pnext;
- _Elem **_IGnext;
- _Elem **_IPnext;
- int _Gcount;
- int _Pcount;
- int *_IGcount;
- int *_IPcount;
- locale *_Plocale;
- };
-
@@ -133318,11 +185867,8 @@
-}
-#pragma warning(pop)
-#pragma pack(pop)
@@ -133335,1351 +185881,184 @@
-#pragma pack(push,8)
-#pragma warning(push,3)
-
-extern "C" {
-extern long __cdecl _Stolx(const char *, char **,
- int, int *);
-extern unsigned long __cdecl _Stoulx(const char *,
- char **, int, int *);
-extern float __cdecl _Stofx(const char *, char **,
- long, int *);
-extern double __cdecl _Stodx(const char *, char **,
- long, int *);
-extern long double __cdecl _Stoldx(const char *,
- char **, long, int *);
-}
-
-
-
-
-namespace std {
-
-
-template<class _Elem>
- class numpunct
- : public locale::facet
- {
-public:
- typedef basic_string<_Elem, char_traits<_Elem>, allocator<_Elem> >
- string_type;
- typedef _Elem char_type;
- static locale::id id;
- _Elem decimal_point() const
- {
- return (do_decimal_point());
- }
- _Elem thousands_sep() const
- {
- return (do_thousands_sep());
- }
- string grouping() const
- {
- return (do_grouping());
- }
- string_type falsename() const
- {
- return (do_falsename());
- }
- string_type truename() const
- {
- return (do_truename());
- }
- explicit numpunct(size_t _Refs = 0)
- : locale::facet(_Refs)
- {
- { _Locinfo _Lobj;
- _Init(_Lobj);
- if (_Kseparator == 0)
- _Kseparator =
- _Maklocchr(',', (_Elem *)0, _Lobj._Getcvt());
- }
- }
- numpunct(const _Locinfo& _Lobj, size_t _Refs = 0)
- : locale::facet(_Refs)
- {
- _Init(_Lobj);
- }
- static size_t __cdecl _Getcat(const locale::facet **_Ppf = 0)
- {
- if (_Ppf != 0 && *_Ppf == 0)
- *_Ppf = new numpunct<_Elem>;
- return (4);
- }
-protected:
- virtual ~numpunct()
- {
- _Tidy();
- }
-protected:
- numpunct(const char *_Locname, size_t _Refs = 0)
- : locale::facet(_Refs)
- {
- { _Locinfo _Lobj(_Locname);
- _Init(_Lobj);
- }
- }
- void _Init(const _Locinfo& _Lobj)
- {
- const lconv *_Ptr = _Lobj._Getlconv();
- _Grouping = 0;
- _Falsename = 0;
- _Truename = 0;
- try {
- _Grouping = _Maklocstr(_Ptr->grouping, (char *)0, _Lobj._Getcvt());
- _Falsename = _Maklocstr(_Lobj._Getfalse(), (_Elem *)0, _Lobj._Getcvt());
- _Truename = _Maklocstr(_Lobj._Gettrue(), (_Elem *)0, _Lobj._Getcvt());
- } catch (...) {
- _Tidy();
- throw;
- }
- _Dp = _Maklocchr(_Ptr->decimal_point[0], (_Elem *)0, _Lobj._Getcvt());
- _Kseparator =
- _Maklocchr(_Ptr->thousands_sep[0], (_Elem *)0, _Lobj._Getcvt());
- }
- virtual _Elem do_decimal_point() const
- {
- return (_Dp);
- }
- virtual _Elem do_thousands_sep() const
- {
- return (_Kseparator);
- }
- virtual string do_grouping() const
- {
- return (string(_Grouping));
- }
- virtual string_type do_falsename() const
- {
- return (string_type(_Falsename));
- }
- virtual string_type do_truename() const
- {
- return (string_type(_Truename));
- }
-private:
- void _Tidy()
- {
- delete[] ((void *)_Grouping);
- delete[] ((void *)_Falsename);
- delete[] ((void *)_Truename);
- }
- const char *_Grouping;
- _Elem _Dp;
- _Elem _Kseparator;
- const _Elem *_Falsename;
- const _Elem *_Truename;
- };
-typedef numpunct<char> _Npc;
-typedef numpunct<wchar_t> _Npwc;
-
-template<class _Elem>
- class numpunct_byname
- : public numpunct<_Elem>
- {
-public:
- explicit numpunct_byname(const char *_Locname, size_t _Refs = 0)
- : numpunct<_Elem>(_Locname, _Refs)
- {
- }
-protected:
- virtual ~numpunct_byname()
- {
- }
- };
-
-template<class _Elem>
- locale::id numpunct<_Elem>::id;
-
-template<class _Elem,
- class _InIt = istreambuf_iterator<_Elem, char_traits<_Elem> > >
- class num_get
- : public locale::facet
- {
-public:
- typedef numpunct<_Elem> _Mypunct;
- typedef basic_string<_Elem, char_traits<_Elem>, allocator<_Elem> >
- _Mystr;
- static size_t __cdecl _Getcat(const locale::facet **_Ppf = 0)
- {
- if (_Ppf != 0 && *_Ppf == 0)
- *_Ppf = new num_get<_Elem, _InIt>;
- return (4);
- }
- static locale::id id;
-protected:
- virtual ~num_get()
- {
- }
-protected:
- void _Init(const _Locinfo& _Lobj)
- {
- _Cvt = _Lobj._Getcvt();
- }
- _Locinfo::_Cvtvec _Cvt;
-public:
- explicit num_get(size_t _Refs = 0)
- : locale::facet(_Refs)
- {
- { _Locinfo _Lobj;
- _Init(_Lobj);
- }
- }
- num_get(const _Locinfo& _Lobj, size_t _Refs = 0)
- : locale::facet(_Refs)
- {
- _Init(_Lobj);
- }
- typedef _Elem char_type;
- typedef _InIt iter_type;
- _InIt get(_InIt _First, _InIt _Last,
- ios_base& _Iosbase, ios_base::iostate& _State,
- _Bool& _Val) const
- {
- return (do_get(_First, _Last, _Iosbase, _State, _Val));
- }
- _InIt get(_InIt _First, _InIt _Last,
- ios_base& _Iosbase, ios_base::iostate& _State,
- unsigned short& _Val) const
- {
- return (do_get(_First, _Last, _Iosbase, _State, _Val));
- }
- _InIt get(_InIt _First, _InIt _Last,
- ios_base& _Iosbase, ios_base::iostate& _State,
- unsigned int& _Val) const
- {
- return (do_get(_First, _Last, _Iosbase, _State, _Val));
- }
- _InIt get(_InIt _First, _InIt _Last,
- ios_base& _Iosbase, ios_base::iostate& _State,
- long& _Val) const
- {
- return (do_get(_First, _Last, _Iosbase, _State, _Val));
- }
- _InIt get(_InIt _First, _InIt _Last,
- ios_base& _Iosbase, ios_base::iostate& _State,
- unsigned long& _Val) const
- {
- return (do_get(_First, _Last, _Iosbase, _State, _Val));
- }
-
- _InIt get(_InIt _First, _InIt _Last,
- ios_base& _Iosbase, ios_base::iostate& _State,
- __int64& _Val) const
- {
- return (do_get(_First, _Last, _Iosbase, _State, _Val));
- }
- _InIt get(_InIt _First, _InIt _Last,
- ios_base& _Iosbase, ios_base::iostate& _State,
- unsigned __int64& _Val) const
- {
- return (do_get(_First, _Last, _Iosbase, _State, _Val));
- }
-
- _InIt get(_InIt _First, _InIt _Last,
- ios_base& _Iosbase, ios_base::iostate& _State,
- float& _Val) const
- {
- return (do_get(_First, _Last, _Iosbase, _State, _Val));
- }
- _InIt get(_InIt _First, _InIt _Last,
- ios_base& _Iosbase, ios_base::iostate& _State,
- double& _Val) const
- {
- return (do_get(_First, _Last, _Iosbase, _State, _Val));
- }
- _InIt get(_InIt _First, _InIt _Last,
- ios_base& _Iosbase, ios_base::iostate& _State,
- long double& _Val) const
- {
- return (do_get(_First, _Last, _Iosbase, _State, _Val));
- }
- _InIt get(_InIt _First, _InIt _Last,
- ios_base& _Iosbase, ios_base::iostate& _State,
- void *& _Val) const
- {
- return (do_get(_First, _Last, _Iosbase, _State, _Val));
- }
-protected:
- virtual _InIt do_get(_InIt _First, _InIt _Last,
- ios_base& _Iosbase, ios_base::iostate& _State,
- _Bool& _Val) const
- {
- ;
- int _Ans = -1;
- if (_Iosbase.flags() & ios_base::boolalpha)
- {
- typedef typename _Mystr::size_type _Mystrsize;
- const _Mypunct& _Punct_fac = use_facet<_Mypunct >(_Iosbase.getloc());
- _Mystr _Str((_Mystrsize)1, (char_type)0);
- _Str += _Punct_fac.falsename();
- _Str += (char_type)0;
- _Str += _Punct_fac.truename();
- _Ans = _Getloctxt(_First, _Last, (size_t)2, _Str.c_str());
- }
- else
- {
- char _Ac[32], *_Ep;
- int _Errno = 0;
- const unsigned long _Ulo = ::_Stoulx(_Ac, &_Ep,
- _Getifld(_Ac, _First, _Last, _Iosbase.flags(),
- _Iosbase.getloc()), &_Errno);
- if (_Ep != _Ac && _Errno == 0 && _Ulo <= 1)
- _Ans = _Ulo;
- }
- if (_First == _Last)
- _State |= ios_base::eofbit;
- if (_Ans < 0)
- _State |= ios_base::failbit;
- else
- _Val = _Ans != 0;
- return (_First);
- }
- virtual _InIt do_get(_InIt _First, _InIt _Last,
- ios_base& _Iosbase, ios_base::iostate& _State,
- unsigned short& _Val) const
- {
- ;
- char _Ac[32], *_Ep;
- int _Errno = 0;
- int _Base = _Getifld(_Ac, _First, _Last, _Iosbase.flags(),
- _Iosbase.getloc());
- char *_Ptr = _Ac[0] == '-' ? _Ac + 1 : _Ac;
- const unsigned long _Ans =
- ::_Stoulx(_Ptr, &_Ep, _Base, &_Errno);
- if (_First == _Last)
- _State |= ios_base::eofbit;
- if (_Ep == _Ptr || _Errno != 0 || 0xffff < _Ans)
- _State |= ios_base::failbit;
- else
- _Val = (unsigned short)(_Ac[0] == '-'
- ? 0 -_Ans : _Ans);
- return (_First);
- }
- virtual _InIt do_get(_InIt _First, _InIt _Last,
- ios_base& _Iosbase, ios_base::iostate& _State,
- unsigned int& _Val) const
- {
- ;
- char _Ac[32], *_Ep;
- int _Errno = 0;
- int _Base = _Getifld(_Ac, _First, _Last, _Iosbase.flags(),
- _Iosbase.getloc());
- char *_Ptr = _Ac[0] == '-' ? _Ac + 1 : _Ac;
- const unsigned long _Ans =
- ::_Stoulx(_Ptr, &_Ep, _Base, &_Errno);
- if (_First == _Last)
- _State |= ios_base::eofbit;
- if (_Ep == _Ptr || _Errno != 0 || 0xffffffff < _Ans)
- _State |= ios_base::failbit;
- else
- _Val = _Ac[0] == '-' ? 0 -_Ans : _Ans;
- return (_First);
- }
- virtual _InIt do_get(_InIt _First, _InIt _Last,
- ios_base& _Iosbase, ios_base::iostate& _State,
- long& _Val) const
- {
- ;
- char _Ac[32], *_Ep;
- int _Errno = 0;
- const long _Ans = ::_Stolx(_Ac, &_Ep,
- _Getifld(_Ac, _First, _Last, _Iosbase.flags(),
- _Iosbase.getloc()), &_Errno);
- if (_First == _Last)
- _State |= ios_base::eofbit;
- if (_Ep == _Ac || _Errno != 0)
- _State |= ios_base::failbit;
- else
- _Val = _Ans;
- return (_First);
- }
- virtual _InIt do_get(_InIt _First, _InIt _Last,
- ios_base& _Iosbase, ios_base::iostate& _State,
- unsigned long& _Val) const
- {
- ;
- char _Ac[32], *_Ep;
- int _Errno = 0;
- const unsigned long _Ans = ::_Stoulx(_Ac, &_Ep,
- _Getifld(_Ac, _First, _Last, _Iosbase.flags(),
- _Iosbase.getloc()), &_Errno);
- if (_First == _Last)
- _State |= ios_base::eofbit;
- if (_Ep == _Ac || _Errno != 0)
- _State |= ios_base::failbit;
- else
- _Val = _Ans;
- return (_First);
- }
-
- virtual _InIt do_get(_InIt _First, _InIt _Last,
- ios_base& _Iosbase, ios_base::iostate& _State,
- __int64& _Val) const
- {
- ;
- char _Ac[32], *_Ep;
- int _Errno = 0;
- const __int64 _Ans = ::_strtoi64(_Ac, &_Ep, _Getifld(_Ac, _First, _Last, _Iosbase.flags(), _Iosbase.getloc()));
- if (_First == _Last)
- _State |= ios_base::eofbit;
- if (_Ep == _Ac || _Errno != 0)
- _State |= ios_base::failbit;
- else
- _Val = _Ans;
- return (_First);
- }
- virtual _InIt do_get(_InIt _First, _InIt _Last,
- ios_base& _Iosbase, ios_base::iostate& _State,
- unsigned __int64& _Val) const
- {
- ;
- char _Ac[32], *_Ep;
- int _Errno = 0;
- const unsigned __int64 _Ans = ::_strtoui64(_Ac, &_Ep, _Getifld(_Ac, _First, _Last, _Iosbase.flags(), _Iosbase.getloc()));
- if (_First == _Last)
- _State |= ios_base::eofbit;
- if (_Ep == _Ac || _Errno != 0)
- _State |= ios_base::failbit;
- else
- _Val = _Ans;
- return (_First);
- }
-
- virtual _InIt do_get(_InIt _First, _InIt _Last,
- ios_base& _Iosbase, ios_base::iostate& _State,
- float& _Val) const
- {
- ;
- char _Ac[8 + 36 + 16], *_Ep;
- int _Errno = 0;
- const float _Ans = ::_Stofx(_Ac, &_Ep,
- _Getffld(_Ac, _First, _Last,
- _Iosbase.getloc()), &_Errno);
- if (_First == _Last)
- _State |= ios_base::eofbit;
- if (_Ep == _Ac || _Errno != 0)
- _State |= ios_base::failbit;
- else
- _Val = _Ans;
- return (_First);
- }
- virtual _InIt do_get(_InIt _First, _InIt _Last,
- ios_base& _Iosbase, ios_base::iostate& _State,
- double& _Val) const
- {
- ;
- char _Ac[8 + 36 + 16], *_Ep;
- int _Errno = 0;
- const double _Ans = ::_Stodx(_Ac, &_Ep,
- _Getffld(_Ac, _First, _Last,
- _Iosbase.getloc()), &_Errno);
- if (_First == _Last)
- _State |= ios_base::eofbit;
- if (_Ep == _Ac || _Errno != 0)
- _State |= ios_base::failbit;
- else
- _Val = _Ans;
- return (_First);
- }
- virtual _InIt do_get(_InIt _First, _InIt _Last,
- ios_base& _Iosbase, ios_base::iostate& _State,
- long double& _Val) const
- {
- ;
- char _Ac[8 + 36 + 16], *_Ep;
- int _Errno = 0;
- const long double _Ans = ::_Stoldx(_Ac, &_Ep,
- _Getffld(_Ac, _First, _Last,
- _Iosbase.getloc()), &_Errno);
- if (_First == _Last)
- _State |= ios_base::eofbit;
- if (_Ep == _Ac || _Errno != 0)
- _State |= ios_base::failbit;
- else
- _Val = _Ans;
- return (_First);
- }
- virtual _InIt do_get(_InIt _First, _InIt _Last,
- ios_base& _Iosbase, ios_base::iostate& _State,
- void *& _Val) const
- {
- ;
- char _Ac[32], *_Ep;
- int _Errno = 0;
-
- int _Base = _Getifld(_Ac, _First, _Last, ios_base::hex,
- _Iosbase.getloc());
- const unsigned __int64 _Ans =
- (sizeof (void *) == sizeof (unsigned long))
- ? (unsigned __int64)::_Stoulx(_Ac, &_Ep, _Base, &_Errno)
- : ::_strtoui64(_Ac, &_Ep, _Base);
-
- if (_First == _Last)
- _State |= ios_base::eofbit;
- if (_Ep == _Ac || _Errno != 0)
- _State |= ios_base::failbit;
- else
- _Val = (void *)(uintptr_t)_Ans;
- return (_First);
- }
-private:
- int __cdecl _Getifld( char *_Ac,
- _InIt& _First, _InIt& _Last, ios_base::fmtflags _Basefield,
- const locale& _Loc) const
- {
- const _Mypunct& _Punct_fac = use_facet<_Mypunct >(_Loc);
- const string _Grouping = _Punct_fac.grouping();
- const _Elem _Kseparator = _Punct_fac.thousands_sep();
- const _Elem _E0 = _Maklocchr('0', (_Elem *)0, _Cvt);
- char *_Ptr = _Ac;
- if (_First == _Last)
- ;
- else if (*_First == _Maklocchr('+', (_Elem *)0, _Cvt))
- *_Ptr++ = '+', ++_First;
- else if (*_First == _Maklocchr('-', (_Elem *)0, _Cvt))
- *_Ptr++ = '-', ++_First;
- _Basefield &= ios_base::basefield;
- int _Base = _Basefield == ios_base::oct ? 8
- : _Basefield == ios_base::hex ? 16
- : _Basefield == ios_base::_Fmtzero ? 0 : 10;
- bool _Seendigit = false;
- bool _Nonzero = false;
- if (_First != _Last && *_First == _E0)
- {
- _Seendigit = true, ++_First;
- if (_First != _Last && (*_First == _Maklocchr('x', (_Elem *)0, _Cvt)
- || *_First == _Maklocchr('X', (_Elem *)0, _Cvt))
- && (_Base == 0 || _Base == 16))
- _Base = 16, _Seendigit = false, ++_First;
- else if (_Base == 0)
- _Base = 8;
- }
- int _Dlen = _Base == 0 || _Base == 10 ? 10
- : _Base == 8 ? 8 : 16 + 6;
- string _Groups((size_t)1, (char)_Seendigit);
- size_t _Group = 0;
- for (char *const _Pe = &_Ac[32 - 1];
- _First != _Last; ++_First)
- if (::memchr("0123456789abcdefABCDEF",
- *_Ptr = _Maklocbyte((_Elem)*_First, _Cvt), _Dlen) != 0)
- {
- if ((_Nonzero || *_Ptr != '0') && _Ptr < _Pe)
- ++_Ptr, _Nonzero = true;
- _Seendigit = true;
- if (_Groups[_Group] != 127)
- ++_Groups[_Group];
- }
- else if (_Groups[_Group] == '\0'
- || _Kseparator == (_Elem)0
- || *_First != _Kseparator)
- break;
- else
- {
- _Groups.append((string::size_type)1, '\0');
- ++_Group;
- }
- if (_Group == 0)
- ;
- else if ('\0' < _Groups[_Group])
- ++_Group;
- else
- _Seendigit = false;
- for (const char *_Pg = _Grouping.c_str(); _Seendigit && 0 < _Group; )
- if (*_Pg == 127)
- break;
- else if (0 < --_Group && *_Pg != _Groups[_Group]
- || 0 == _Group && *_Pg < _Groups[_Group])
- _Seendigit = false;
- else if ('\0' < _Pg[1])
- ++_Pg;
- if (_Seendigit && !_Nonzero)
- *_Ptr++ = '0';
- else if (!_Seendigit)
- _Ptr = _Ac;
- *_Ptr = '\0';
- return (_Base);
- }
- int __cdecl _Getffld( char *_Ac,
- _InIt& _First, _InIt &_Last, const locale& _Loc) const
- {
- const _Mypunct& _Punct_fac = use_facet<_Mypunct >(_Loc);
- const string _Grouping = _Punct_fac.grouping();
- const _Elem _E0 = _Maklocchr('0', (_Elem *)0, _Cvt);
- char *_Ptr = _Ac;
- bool _Bad = false;
- if (_First == _Last)
- ;
- else if (*_First == _Maklocchr('+', (_Elem *)0, _Cvt))
- *_Ptr++ = '+', ++_First;
- else if (*_First == _Maklocchr('-', (_Elem *)0, _Cvt))
- *_Ptr++ = '-', ++_First;
- bool _Seendigit = false;
- int _Significant = 0;
- int _Pten = 0;
- if (*_Grouping.c_str() == 127 || *_Grouping.c_str() <= '\0')
- for (; _First != _Last
- && _E0 <= *_First && *_First <= _E0 + 9;
- _Seendigit = true, ++_First)
- if (36 <= _Significant)
- ++_Pten;
- else if (*_First == _E0 && _Significant == 0)
- ;
- else
- {
- *_Ptr++ = (char)((*_First - _E0) + '0');
- ++_Significant;
- }
- else
- {
- const _Elem _Kseparator = _Punct_fac.thousands_sep();
- string _Groups((size_t)1, '\0');
- size_t _Group = 0;
- for (; _First != _Last; ++_First)
- if (_E0 <= *_First && *_First <= _E0 + 9)
- {
- _Seendigit = true;
- if (36 <= _Significant)
- ++_Pten;
- else if (*_First == _E0 && _Significant == 0)
- ;
- else
- {
- *_Ptr++ = (char)((*_First - _E0) + '0');
- ++_Significant;
- }
- if (_Groups[_Group] != 127)
- ++_Groups[_Group];
- }
- else if (_Groups[_Group] == '\0'
- || _Kseparator == (_Elem)0
- || *_First != _Kseparator)
- break;
- else
- {
- _Groups.append((size_t)1, '\0');
- ++_Group;
- }
- if (_Group == 0)
- ;
- else if ('\0' < _Groups[_Group])
- ++_Group;
- else
- _Bad = true;
- for (const char *_Pg = _Grouping.c_str();
- !_Bad && 0 < _Group; )
- if (*_Pg == 127)
- break;
- else if (0 < --_Group && *_Pg != _Groups[_Group]
- || 0 == _Group && *_Pg < _Groups[_Group])
- _Bad = true;
- else if ('\0' < _Pg[1])
- ++_Pg;
- }
- if (_Seendigit && _Significant == 0)
- *_Ptr++ = '0';
- if (_First != _Last && *_First == _Punct_fac.decimal_point())
- *_Ptr++ = localeconv()->decimal_point[0], ++_First;
- if (_Significant == 0)
- {
- for (; _First != _Last && *_First == _E0;
- _Seendigit = true, ++_First)
- --_Pten;
- if (_Pten < 0)
- *_Ptr++ = '0', ++_Pten;
- }
- for (; _First != _Last
- && _E0 <= *_First && *_First <= _E0 + 9;
- _Seendigit = true, ++_First)
- if (_Significant < 36)
- {
- *_Ptr++ = (char)((*_First - _E0) + '0');
- ++_Significant;
- }
- if (_Seendigit && _First != _Last
- && (*_First == _Maklocchr('e', (_Elem *)0, _Cvt)
- || *_First == _Maklocchr('E', (_Elem *)0, _Cvt)))
- {
- *_Ptr++ = 'e', ++_First;
- _Seendigit = false, _Significant = 0;
- if (_First == _Last)
- ;
- else if (*_First == _Maklocchr('+', (_Elem *)0, _Cvt))
- *_Ptr++ = '+', ++_First;
- else if (*_First == _Maklocchr('-', (_Elem *)0, _Cvt))
- *_Ptr++ = '-', ++_First;
- for (; _First != _Last && *_First == _E0; )
- _Seendigit = true, ++_First;
- if (_Seendigit)
- *_Ptr++ = '0';
- for (; _First != _Last
- && _E0 <= *_First && *_First <= _E0 + 9;
- _Seendigit = true, ++_First)
- if (_Significant < 8)
- {
- *_Ptr++ = (char)((*_First - _E0) + '0');
- ++_Significant;
- }
- }
- if (_Bad || !_Seendigit)
- _Ptr = _Ac;
- *_Ptr = '\0';
- return (_Pten);
- }
- };
-
-template<class _Elem,
- class _InIt>
- locale::id num_get<_Elem, _InIt>::id;
-
-template<class _Elem,
- class _OutIt = ostreambuf_iterator<_Elem, char_traits<_Elem> > >
- class num_put
- : public locale::facet
- {
-public:
- typedef numpunct<_Elem> _Mypunct;
- typedef basic_string<_Elem, char_traits<_Elem>, allocator<_Elem> >
- _Mystr;
- static size_t __cdecl _Getcat(const locale::facet **_Ppf = 0)
- {
- if (_Ppf != 0 && *_Ppf == 0)
- *_Ppf = new num_put<_Elem, _OutIt>;
- return (4);
- }
- static locale::id id;
-protected:
- virtual ~num_put()
- {
- }
-protected:
- void _Init(const _Locinfo& _Lobj)
- {
- _Cvt = _Lobj._Getcvt();
- }
- _Locinfo::_Cvtvec _Cvt;
-public:
- explicit num_put(size_t _Refs = 0)
- : locale::facet(_Refs)
- {
- { _Locinfo _Lobj;
- _Init(_Lobj);
- }
- }
- num_put(const _Locinfo& _Lobj, size_t _Refs = 0)
- : locale::facet(_Refs)
- {
- _Init(_Lobj);
- }
- typedef _Elem char_type;
- typedef _OutIt iter_type;
- _OutIt put(_OutIt _Dest,
- ios_base& _Iosbase, _Elem _Fill, _Bool _Val) const
- {
- return (do_put(_Dest, _Iosbase, _Fill, _Val));
- }
- _OutIt put(_OutIt _Dest,
- ios_base& _Iosbase, _Elem _Fill, long _Val) const
- {
- return (do_put(_Dest, _Iosbase, _Fill, _Val));
- }
- _OutIt put(_OutIt _Dest,
- ios_base& _Iosbase, _Elem _Fill, unsigned long _Val) const
- {
- return (do_put(_Dest, _Iosbase, _Fill, _Val));
- }
-
- _OutIt put(_OutIt _Dest,
- ios_base& _Iosbase, _Elem _Fill, __int64 _Val) const
- {
- return (do_put(_Dest, _Iosbase, _Fill, _Val));
- }
- _OutIt put(_OutIt _Dest,
- ios_base& _Iosbase, _Elem _Fill, unsigned __int64 _Val) const
- {
- return (do_put(_Dest, _Iosbase, _Fill, _Val));
- }
-
- _OutIt put(_OutIt _Dest,
- ios_base& _Iosbase, _Elem _Fill, double _Val) const
- {
- return (do_put(_Dest, _Iosbase, _Fill, _Val));
- }
- _OutIt put(_OutIt _Dest,
- ios_base& _Iosbase, _Elem _Fill, long double _Val) const
- {
- return (do_put(_Dest, _Iosbase, _Fill, _Val));
- }
- _OutIt put(_OutIt _Dest,
- ios_base& _Iosbase, _Elem _Fill, const void *_Val) const
- {
- return (do_put(_Dest, _Iosbase, _Fill, _Val));
- }
-protected:
- virtual _OutIt do_put(_OutIt _Dest,
- ios_base& _Iosbase, _Elem _Fill, _Bool _Val) const
- {
- ;
- if (!(_Iosbase.flags() & ios_base::boolalpha))
- return (do_put(_Dest, _Iosbase, _Fill, (long)_Val));
- else
- {
- const _Mypunct& _Punct_fac = use_facet<_Mypunct >(_Iosbase.getloc());
- _Mystr _Str;
- if (_Val)
- _Str.assign(_Punct_fac.truename());
- else
- _Str.assign(_Punct_fac.falsename());
- size_t _Fillcount = _Iosbase.width() <= 0
- || (size_t)_Iosbase.width() <= _Str.size()
- ? 0 : (size_t)_Iosbase.width() - _Str.size();
- if ((_Iosbase.flags() & ios_base::adjustfield) != ios_base::left)
- {
- _Dest = _Rep(_Dest, _Fill, _Fillcount);
- _Fillcount = 0;
- }
- _Dest = _Put(_Dest, _Str.c_str(), _Str.size());
- _Iosbase.width(0);
- return (_Rep(_Dest, _Fill, _Fillcount));
- }
- }
- virtual _OutIt do_put(_OutIt _Dest,
- ios_base& _Iosbase, _Elem _Fill, long _Val) const
- {
- const size_t _Buf_size = 2 * 32;
- char _Buf[_Buf_size], _Fmt[6];
- return (_Iput(_Dest, _Iosbase, _Fill, _Buf,
- ::sprintf_s(_Buf, _Buf_size, _Ifmt(_Fmt, "ld",
- _Iosbase.flags()), _Val)));
- }
- virtual _OutIt do_put(_OutIt _Dest,
- ios_base& _Iosbase, _Elem _Fill, unsigned long _Val) const
- {
- const size_t _Buf_size = 2 * 32;
- char _Buf[_Buf_size], _Fmt[6];
- return (_Iput(_Dest, _Iosbase, _Fill, _Buf,
- ::sprintf_s(_Buf, _Buf_size, _Ifmt(_Fmt, "lu",
- _Iosbase.flags()), _Val)));
- }
-
- virtual _OutIt do_put(_OutIt _Dest,
- ios_base& _Iosbase, _Elem _Fill, __int64 _Val) const
- {
- const size_t _Buf_size = 2 * 32;
- char _Buf[_Buf_size], _Fmt[8];
- return (_Iput(_Dest, _Iosbase, _Fill, _Buf,
- ::sprintf_s(_Buf, _Buf_size, _Ifmt(_Fmt, "Ld",
- _Iosbase.flags()), _Val)));
- }
- virtual _OutIt do_put(_OutIt _Dest,
- ios_base& _Iosbase, _Elem _Fill, unsigned __int64 _Val) const
- {
- const size_t _Buf_size = 2 * 32;
- char _Buf[_Buf_size], _Fmt[8];
- return (_Iput(_Dest, _Iosbase, _Fill, _Buf,
- ::sprintf_s(_Buf, _Buf_size, _Ifmt(_Fmt, "Lu",
- _Iosbase.flags()), _Val)));
- }
-
- virtual _OutIt do_put(_OutIt _Dest,
- ios_base& _Iosbase, _Elem _Fill, double _Val) const
- {
- const size_t _Buf_size = 8 + 36 + 64;
- char _Buf[_Buf_size], _Fmt[8];
- streamsize _Precision = _Iosbase.precision() <= 0
- && !(_Iosbase.flags() & ios_base::fixed)
- ? 6 : _Iosbase.precision();
- int _Significance = 36 < _Precision
- ? 36 : (int)_Precision;
- _Precision -= _Significance;
- size_t _Beforepoint = 0;
- size_t _Afterpoint = 0;
- if ((_Iosbase.flags() & ios_base::floatfield) == ios_base::fixed)
- {
- bool _Signed = _Val < 0;
- if (_Signed)
- _Val = -_Val;
- for (; 1e35 <= _Val && _Beforepoint < 5000; _Beforepoint += 10)
- _Val /= 1e10;
- if (0 < _Val)
- for (; 10 <= _Precision && _Val <= 1e-35
- && _Afterpoint < 5000; _Afterpoint += 10)
- {
- _Val *= 1e10;
- _Precision -= 10;
- }
- if (_Signed)
- _Val = -_Val;
- }
- return (_Fput(_Dest, _Iosbase, _Fill, _Buf,
- _Beforepoint, _Afterpoint, _Precision,
- ::sprintf_s(_Buf, _Buf_size, _Ffmt(_Fmt, 0, _Iosbase.flags()),
- _Significance, _Val)));
- }
- virtual _OutIt do_put(_OutIt _Dest,
- ios_base& _Iosbase, _Elem _Fill, long double _Val) const
- {
- const size_t _Buf_size = 8 + 36 + 64;
- char _Buf[_Buf_size], _Fmt[8];
- streamsize _Precision = _Iosbase.precision() <= 0
- && !(_Iosbase.flags() & ios_base::fixed)
- ? 6 : _Iosbase.precision();
- int _Significance = 36 < _Precision
- ? 36 : (int)_Precision;
- _Precision -= _Significance;
- size_t _Beforepoint = 0;
- size_t _Afterpoint = 0;
- if ((_Iosbase.flags() & ios_base::floatfield) == ios_base::fixed)
- {
- bool _Signed = _Val < 0;
- if (_Signed)
- _Val = -_Val;
- for (; 1e35 <= _Val && _Beforepoint < 5000; _Beforepoint += 10)
- _Val /= 1e10;
- if (0 < _Val)
- for (; 10 <= _Precision && _Val <= 1e-35
- && _Afterpoint < 5000; _Afterpoint += 10)
- {
- _Val *= 1e10;
- _Precision -= 10;
- }
- if (_Signed)
- _Val = -_Val;
- }
- return (_Fput(_Dest, _Iosbase, _Fill, _Buf,
- _Beforepoint, _Afterpoint, _Precision,
- ::sprintf_s(_Buf, _Buf_size, _Ffmt(_Fmt, 'L', _Iosbase.flags()),
- _Significance, _Val)));
- }
- virtual _OutIt do_put(_OutIt _Dest,
- ios_base& _Iosbase, _Elem _Fill, const void *_Val) const
- {
- const size_t _Buf_size = 2 * 32;
- char _Buf[_Buf_size];
- return (_Iput(_Dest, _Iosbase, _Fill, _Buf,
- ::sprintf_s(_Buf, _Buf_size, "%p", _Val)));
- }
-private:
- char *__cdecl _Ffmt( char *_Fmt,
- char _Spec, ios_base::fmtflags _Flags) const
- {
- char *_Ptr = _Fmt;
- *_Ptr++ = '%';
- if (_Flags & ios_base::showpos)
- *_Ptr++ = '+';
- if (_Flags & ios_base::showpoint)
- *_Ptr++ = '#';
- *_Ptr++ = '.';
- *_Ptr++ = '*';
- if (_Spec != '\0')
- *_Ptr++ = _Spec;
- ios_base::fmtflags _Ffl = _Flags & ios_base::floatfield;
- *_Ptr++ = _Ffl == ios_base::fixed ? 'f'
- : _Ffl == ios_base::scientific ? 'e' : 'g';
- *_Ptr = '\0';
- return (_Fmt);
- }
- _OutIt __cdecl _Fput(_OutIt _Dest,
- ios_base& _Iosbase, _Elem _Fill, const char *_Buf,
- size_t _Beforepoint, size_t _Afterpoint,
- size_t _Trailing, size_t _Count) const
- {
- ;
- const _Mypunct& _Punct_fac = use_facet<_Mypunct >(_Iosbase.getloc());
- const string _Grouping = _Punct_fac.grouping();
- const _Elem _Kseparator = _Punct_fac.thousands_sep();
- string _Groupstring;
- const _Elem _E0 = _Maklocchr('0', (_Elem *)0, _Cvt);
- size_t _Prefix = _Buf[0] == '+' || _Buf[0] == '-' ? 1 : 0;
- char _Enders[3];
- _Enders[0] = ::localeconv()->decimal_point[0];
- _Enders[1] = 'e';
- _Enders[2] = '\0';
- const char *_Eptr = (const char *)::memchr(_Buf,
- 'e', _Count);
- const char *_Pointptr = (const char *)::memchr(_Buf,
- _Enders[0], _Count);
- if (_Pointptr == 0)
- _Trailing = 0;
- if (*_Grouping.c_str() != 127 && '\0' < *_Grouping.c_str())
- {
- _Groupstring.append(_Buf, _Count);
- if (_Eptr == 0)
- _Groupstring.append(_Trailing, '0');
- else
- {
- if (_Pointptr == 0)
- {
- _Groupstring.append(_Beforepoint, '0');
- _Beforepoint = 0;
- }
- _Groupstring.insert(_Eptr - _Buf, _Trailing, '0');
- }
- _Trailing = 0;
- if (_Pointptr == 0)
- _Groupstring.append(_Beforepoint, '0');
- else
- {
- _Groupstring.insert(_Pointptr - _Buf + 1, _Afterpoint, '0');
- _Groupstring.insert(_Pointptr - _Buf, _Beforepoint, '0');
- _Afterpoint = 0;
- }
- _Beforepoint = 0;
- const char *_Pg = _Grouping.c_str();
- size_t _Off = ::strcspn(&_Groupstring[0], &_Enders[0]);
- while (*_Pg != 127 && '\0' < *_Pg
- && (size_t)*_Pg < _Off - _Prefix)
- {
- _Groupstring.insert(_Off -= *_Pg, (size_t)1, '\0');
- if ('\0' < _Pg[1])
- ++_Pg;
- }
- _Buf = &_Groupstring[0];
- _Trailing = 0;
- _Count = _Groupstring.size();
- }
- size_t _Fillcount = _Beforepoint + _Afterpoint + _Trailing + _Count;
- _Fillcount = _Iosbase.width() <= 0
- || (size_t)_Iosbase.width() <= _Fillcount
- ? 0 : (size_t)_Iosbase.width() - _Fillcount;
- ios_base::fmtflags _Adjustfield =
- _Iosbase.flags() & ios_base::adjustfield;
- if (_Adjustfield != ios_base::left
- && _Adjustfield != ios_base::internal)
- {
- _Dest = _Rep(_Dest, _Fill, _Fillcount);
- _Fillcount = 0;
- }
- else if (_Adjustfield == ios_base::internal)
- {
- if (0 < _Prefix)
- {
- _Dest = _Putc(_Dest, _Buf, 1);
- ++_Buf, --_Count;
- }
- _Dest = _Rep(_Dest, _Fill, _Fillcount);
- _Fillcount = 0;
- }
- _Pointptr = (const char *)::memchr(_Buf,
- _Enders[0], _Count);
- if (_Pointptr != 0)
- {
- size_t _Fracoffset = _Pointptr - _Buf + 1;
- _Dest = _Putgrouped(_Dest, _Buf, _Fracoffset - 1, _Kseparator);
- _Dest = _Rep(_Dest, _E0, _Beforepoint);
- _Dest = _Rep(_Dest, _Punct_fac.decimal_point(), 1);
- _Dest = _Rep(_Dest, _E0, _Afterpoint);
- _Buf += _Fracoffset, _Count -= _Fracoffset;
- }
- _Eptr = (const char *)::memchr(_Buf,
- 'e', _Count);
- if (_Eptr != 0)
- {
- size_t _Expoffset = _Eptr - _Buf + 1;
- _Dest = _Putgrouped(_Dest, _Buf, _Expoffset - 1, _Kseparator);
- _Dest = _Rep(_Dest, _E0, _Trailing), _Trailing = 0;
- _Dest = _Putc(_Dest, _Iosbase.flags() & ios_base::uppercase
- ? "E" : "e", 1);
- _Buf += _Expoffset, _Count -= _Expoffset;
- }
- _Dest = _Putgrouped(_Dest, _Buf, _Count,
- _Kseparator);
- _Dest = _Rep(_Dest, _E0, _Trailing);
- _Iosbase.width(0);
- return (_Rep(_Dest, _Fill, _Fillcount));
- }
- char *__cdecl _Ifmt( char *_Fmt,
- const char *_Spec, ios_base::fmtflags _Flags) const
- {
- char *_Ptr = _Fmt;
- *_Ptr++ = '%';
- if (_Flags & ios_base::showpos)
- *_Ptr++ = '+';
- if (_Flags & ios_base::showbase)
- *_Ptr++ = '#';
- if (_Spec[0] != 'L')
- *_Ptr++ = _Spec[0];
- else
- {
- *_Ptr++ = 'I';
- *_Ptr++ = '6';
- *_Ptr++ = '4';
- }
- ios_base::fmtflags _Basefield = _Flags & ios_base::basefield;
- *_Ptr++ = _Basefield == ios_base::oct ? 'o'
- : _Basefield != ios_base::hex ? _Spec[1]
- : _Flags & ios_base::uppercase ? 'X' : 'x';
- *_Ptr = '\0';
- return (_Fmt);
- }
- _OutIt __cdecl _Iput(_OutIt _Dest,
- ios_base& _Iosbase, _Elem _Fill, char *_Buf, size_t _Count) const
- {
- ;
- const _Mypunct& _Punct_fac = use_facet<_Mypunct >(_Iosbase.getloc());
- const string _Grouping = _Punct_fac.grouping();
- const size_t _Prefix = *_Buf == '+' || *_Buf == '-' ? 1
- : *_Buf == '0' && (_Buf[1] == 'x' || _Buf[1] == 'X') ? 2
- : 0;
- if (*_Grouping.c_str() != 127 && '\0' < *_Grouping.c_str())
- {
- const char *_Pg = _Grouping.c_str();
- size_t _Off = _Count;
- while (*_Pg != 127 && '\0' < *_Pg
- && (size_t)*_Pg < _Off - _Prefix)
- {
- _Off -= *_Pg;
- ::memmove_s((&_Buf[_Off + 1]), (_Count + 1 - _Off), (&_Buf[_Off]), (_Count + 1 - _Off));
- _Buf[_Off] = '\0', ++_Count;
- if ('\0' < _Pg[1])
- ++_Pg;
- }
- }
- size_t _Fillcount = _Iosbase.width() <= 0
- || (size_t)_Iosbase.width() <= _Count
- ? 0 : (size_t)_Iosbase.width() - _Count;
- ios_base::fmtflags _Adjustfield =
- _Iosbase.flags() & ios_base::adjustfield;
- if (_Adjustfield != ios_base::left
- && _Adjustfield != ios_base::internal)
- {
- _Dest = _Rep(_Dest, _Fill, _Fillcount);
- _Fillcount = 0;
- }
- else if (_Adjustfield == ios_base::internal)
- {
- _Dest = _Putc(_Dest, _Buf, _Prefix);
- _Buf += _Prefix, _Count -= _Prefix;
- _Dest = _Rep(_Dest, _Fill, _Fillcount), _Fillcount = 0;
- }
- _Dest = _Putgrouped(_Dest, _Buf, _Count,
- _Punct_fac.thousands_sep());
- _Iosbase.width(0);
- return (_Rep(_Dest, _Fill, _Fillcount));
- }
- _OutIt __cdecl _Put(_OutIt _Dest,
- const _Elem *_Ptr, size_t _Count) const
- {
- for (; 0 < _Count; --_Count, ++_Dest, ++_Ptr)
- *_Dest = *_Ptr;
- return (_Dest);
- }
- _OutIt __cdecl _Putc(_OutIt _Dest,
- const char *_Ptr, size_t _Count) const
- {
- for (; 0 < _Count; --_Count, ++_Dest, ++_Ptr)
- *_Dest = _Maklocchr(*_Ptr, (_Elem *)0, _Cvt);
- return (_Dest);
- }
- _OutIt __cdecl _Putgrouped(_OutIt _Dest,
- const char *_Ptr, size_t _Count, _Elem _Kseparator) const
- {
- for (; ; ++_Ptr, --_Count)
- {
- const char *_Pend =
- (const char *)::memchr(_Ptr, '\0', _Count);
- size_t _Groupsize = _Pend != 0 ? _Pend - _Ptr : _Count;
- _Dest = _Putc(_Dest, _Ptr, _Groupsize);
- _Ptr += _Groupsize, _Count -= _Groupsize;
- if (_Count == 0)
- break;
- if (_Kseparator != (_Elem)0)
- _Dest = _Rep(_Dest, _Kseparator, 1);
- }
- return (_Dest);
- }
- _OutIt __cdecl _Rep(_OutIt _Dest,
- _Elem _Ch, size_t _Count) const
- {
- for (; 0 < _Count; --_Count, ++_Dest)
- *_Dest = _Ch;
- return (_Dest);
- }
- };
-
-template<class _Elem,
- class _OutIt>
- locale::id num_put<_Elem, _OutIt>::id;
-
@@ -134696,11 +186075,8 @@
-}
-#pragma warning(pop)
-#pragma pack(pop)
@@ -134714,157 +186090,32 @@
-#pragma pack(push,8)
-#pragma warning(push,3)
-namespace std {
-
-template<class _Elem,
- class _Traits>
- class basic_ios
- : public ios_base
- {
-public:
- typedef basic_ios<_Elem, _Traits> _Myt;
- typedef basic_ostream<_Elem, _Traits> _Myos;
- typedef basic_streambuf<_Elem, _Traits> _Mysb;
- typedef ctype<_Elem> _Ctype;
- typedef _Elem char_type;
- typedef _Traits traits_type;
- typedef typename _Traits::int_type int_type;
- typedef typename _Traits::pos_type pos_type;
- typedef typename _Traits::off_type off_type;
- explicit basic_ios(_Mysb *_Strbuf)
- {
- init(_Strbuf);
- }
- virtual ~basic_ios()
- {
- }
- void clear(iostate _State = goodbit, bool _Reraise = false)
- {
- ios_base::clear((iostate)(_Mystrbuf == 0
- ? (int)_State | (int)badbit : (int)_State), _Reraise);
- }
- void clear(io_state _State)
- {
- clear((iostate)_State);
- }
- void setstate(iostate _State, bool _Reraise = false)
- {
- if (_State != goodbit)
- clear((iostate)((int)rdstate() | (int)_State), _Reraise);
- }
- void setstate(io_state _State)
- {
- setstate((iostate)_State);
- }
- _Myt& copyfmt(const _Myt& _Right)
- {
- _Tiestr = _Right.tie();
- _Fillch = _Right.fill();
- ios_base::copyfmt(_Right);
- return (*this);
- }
- _Myos * tie() const
- {
- return (_Tiestr);
- }
- _Myos * tie(_Myos *_Newtie)
- {
- _Myos *_Oldtie = _Tiestr;
- _Tiestr = _Newtie;
- return (_Oldtie);
- }
- _Mysb * rdbuf() const
- {
- return (_Mystrbuf);
- }
- _Mysb * rdbuf(_Mysb *_Strbuf)
- {
- _Mysb *_Oldstrbuf = _Mystrbuf;
- _Mystrbuf = _Strbuf;
- clear();
- return (_Oldstrbuf);
- }
- locale imbue(const locale& _Loc)
- {
- locale _Oldlocale = ios_base::imbue(_Loc);
- if (rdbuf() != 0)
- rdbuf()->pubimbue(_Loc);
- return (_Oldlocale);
- }
- _Elem fill() const
- {
- return (_Fillch);
- }
- _Elem fill(_Elem _Newfill)
- {
- _Elem _Oldfill = _Fillch;
- _Fillch = _Newfill;
- return (_Oldfill);
- }
- char narrow(_Elem _Ch, char _Dflt = '\0') const
- {
- const _Ctype& _Ctype_fac = use_facet<_Ctype >(getloc());
- return (_Ctype_fac.narrow(_Ch, _Dflt));
- }
- _Elem widen(char _Byte) const
- {
- const _Ctype& _Ctype_fac = use_facet<_Ctype >(getloc());
- return (_Ctype_fac.widen(_Byte));
- }
-protected:
- void init(_Mysb *_Strbuf = 0,
- bool _Isstd = false)
- {
- _Init();
- _Mystrbuf = _Strbuf;
- _Tiestr = 0;
- _Fillch = widen(' ');
- if (_Mystrbuf == 0)
- setstate(badbit);
- if (_Isstd)
- _Addstd(this);
- else
- _Stdstr = 0;
- }
- basic_ios()
- {
- }
-private:
- basic_ios(const _Myt&);
- _Myt& operator=(const _Myt&);
- _Mysb *_Mystrbuf;
- _Myos *_Tiestr;
- _Elem _Fillch;
- };
-
@@ -134875,143 +186126,47 @@
-
-inline ios_base& __cdecl boolalpha(ios_base& _Iosbase)
- {
- _Iosbase.setf(ios_base::boolalpha);
- return (_Iosbase);
- }
-inline ios_base& __cdecl dec(ios_base& _Iosbase)
- {
- _Iosbase.setf(ios_base::dec, ios_base::basefield);
- return (_Iosbase);
- }
-inline ios_base& __cdecl fixed(ios_base& _Iosbase)
- {
- _Iosbase.setf(ios_base::fixed, ios_base::floatfield);
- return (_Iosbase);
- }
-inline ios_base& __cdecl hex(ios_base& _Iosbase)
- {
- _Iosbase.setf(ios_base::hex, ios_base::basefield);
- return (_Iosbase);
- }
-inline ios_base& __cdecl internal(ios_base& _Iosbase)
- {
- _Iosbase.setf(ios_base::internal, ios_base::adjustfield);
- return (_Iosbase);
- }
-inline ios_base& __cdecl left(ios_base& _Iosbase)
- {
- _Iosbase.setf(ios_base::left, ios_base::adjustfield);
- return (_Iosbase);
- }
-inline ios_base& __cdecl noboolalpha(ios_base& _Iosbase)
- {
- _Iosbase.unsetf(ios_base::boolalpha);
- return (_Iosbase);
- }
-inline ios_base& __cdecl noshowbase(ios_base& _Iosbase)
- {
- _Iosbase.unsetf(ios_base::showbase);
- return (_Iosbase);
- }
-inline ios_base& __cdecl noshowpoint(ios_base& _Iosbase)
- {
- _Iosbase.unsetf(ios_base::showpoint);
- return (_Iosbase);
- }
-inline ios_base& __cdecl noshowpos(ios_base& _Iosbase)
- {
- _Iosbase.unsetf(ios_base::showpos);
- return (_Iosbase);
- }
-inline ios_base& __cdecl noskipws(ios_base& _Iosbase)
- {
- _Iosbase.unsetf(ios_base::skipws);
- return (_Iosbase);
- }
-inline ios_base& __cdecl nounitbuf(ios_base& _Iosbase)
- {
- _Iosbase.unsetf(ios_base::unitbuf);
- return (_Iosbase);
- }
-inline ios_base& __cdecl nouppercase(ios_base& _Iosbase)
- {
- _Iosbase.unsetf(ios_base::uppercase);
- return (_Iosbase);
- }
-inline ios_base& __cdecl oct(ios_base& _Iosbase)
- {
- _Iosbase.setf(ios_base::oct, ios_base::basefield);
- return (_Iosbase);
- }
-inline ios_base& __cdecl right(ios_base& _Iosbase)
- {
- _Iosbase.setf(ios_base::right, ios_base::adjustfield);
- return (_Iosbase);
- }
-inline ios_base& __cdecl scientific(ios_base& _Iosbase)
- {
- _Iosbase.setf(ios_base::scientific, ios_base::floatfield);
- return (_Iosbase);
- }
-inline ios_base& __cdecl showbase(ios_base& _Iosbase)
- {
- _Iosbase.setf(ios_base::showbase);
- return (_Iosbase);
- }
-inline ios_base& __cdecl showpoint(ios_base& _Iosbase)
- {
- _Iosbase.setf(ios_base::showpoint);
- return (_Iosbase);
- }
-inline ios_base& __cdecl showpos(ios_base& _Iosbase)
- {
- _Iosbase.setf(ios_base::showpos);
- return (_Iosbase);
- }
-inline ios_base& __cdecl skipws(ios_base& _Iosbase)
- {
- _Iosbase.setf(ios_base::skipws);
- return (_Iosbase);
- }
-inline ios_base& __cdecl unitbuf(ios_base& _Iosbase)
- {
- _Iosbase.setf(ios_base::unitbuf);
- return (_Iosbase);
- }
-inline ios_base& __cdecl uppercase(ios_base& _Iosbase)
- {
- _Iosbase.setf(ios_base::uppercase);
- return (_Iosbase);
- }
-}
-#pragma warning(pop)
-#pragma pack(pop)
+namespace boost {
+
+template< typename T > struct remove_extent { typedef T type; };
+
+
+template< typename T, std::size_t N > struct remove_extent<T[N]> { typedef T type; };
+template< typename T, std::size_t N > struct remove_extent<T const[N]> { typedef T const type; };
+template< typename T, std::size_t N > struct remove_extent<T volatile[N]> { typedef T volatile type; };
+template< typename T, std::size_t N > struct remove_extent<T const volatile[N]> { typedef T const volatile type; };
+
+template< typename T > struct remove_extent<T[]> { typedef T type; };
+template< typename T > struct remove_extent<T const[]> { typedef T const type; };
+template< typename T > struct remove_extent<T volatile[]> { typedef T volatile type; };
+template< typename T > struct remove_extent<T const volatile[]> { typedef T const volatile type; };
+
+
+
+}
@@ -135024,26 +186179,17 @@
-#pragma pack(push,8)
-#pragma warning(push,3)
-namespace std {
-
-
-
-
-
-
@@ -135051,114 +186197,26 @@
-
-template<class _Elem,
- class _Traits>
- class basic_ostream
- : virtual public basic_ios<_Elem, _Traits>
- {
-public:
- typedef basic_ostream<_Elem, _Traits> _Myt;
- typedef basic_ios<_Elem, _Traits> _Myios;
- typedef basic_streambuf<_Elem, _Traits> _Mysb;
- typedef ostreambuf_iterator<_Elem, _Traits> _Iter;
- typedef num_put<_Elem, _Iter> _Nput;
- explicit basic_ostream(basic_streambuf<_Elem, _Traits> *_Strbuf,
- bool _Isstd = false)
- {
- _Myios::init(_Strbuf, _Isstd);
- }
- basic_ostream(_Uninitialized)
- {
- ios_base::_Addstd(this);
- }
- virtual ~basic_ostream()
- {
- }
- typedef typename _Traits::int_type int_type;
- typedef typename _Traits::pos_type pos_type;
- typedef typename _Traits::off_type off_type;
- class _Sentry_base
- {
- public:
- _Sentry_base(_Myt& _Ostr)
- : _Myostr(_Ostr)
- {
- if (_Myostr.rdbuf() != 0)
- _Myostr.rdbuf()->_Lock();
- }
- ~_Sentry_base()
- {
- if (_Myostr.rdbuf() != 0)
- _Myostr.rdbuf()->_Unlock();
- }
- _Myt& _Myostr;
- };
- class sentry
- : public _Sentry_base
- {
- public:
- explicit sentry(_Myt& _Ostr)
- : _Sentry_base(_Ostr)
- {
- if (_Ostr.good() && _Ostr.tie() != 0)
- _Ostr.tie()->flush();
- _Ok = _Ostr.good();
- }
- ~sentry()
- {
-
- if (!std:: uncaught_exception())
- this->_Myostr._Osfx();
- }
-
- operator bool() const
- {
- return (_Ok);
- }
- private:
- sentry(const sentry&);
- sentry& operator=(const sentry&);
- bool _Ok;
- };
- bool opfx()
- {
- if (ios_base::good() && _Myios::tie() != 0)
- _Myios::tie()->flush();
- return (ios_base::good());
- }
- void osfx()
- {
- _Osfx();
- }
- void _Osfx()
- {
- try {
- if (ios_base::flags() & ios_base::unitbuf)
- flush();
- } catch (...) {
- }
- }
@@ -135183,72 +186241,17 @@
- _Myt& operator<<(_Myt& (__cdecl *_Pfn)(_Myt&))
- {
- ;
- return ((*_Pfn)(*this));
- }
- _Myt& operator<<(_Myios& (__cdecl *_Pfn)(_Myios&))
- {
- ;
- (*_Pfn)(*(_Myios *)this);
- return (*this);
- }
- _Myt& operator<<(ios_base& (__cdecl *_Pfn)(ios_base&))
- {
- ;
- (*_Pfn)(*(ios_base *)this);
- return (*this);
- }
- _Myt& operator<<(_Bool _Val)
- {
- ios_base::iostate _State = ios_base::goodbit;
- const sentry _Ok(*this);
- if (_Ok)
- {
- const _Nput& _Nput_fac = use_facet<_Nput >(ios_base::getloc());
- try {
- if (_Nput_fac.put(_Iter(_Myios::rdbuf()), *this,
- _Myios::fill(), _Val).failed())
- _State |= ios_base::badbit;
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- _Myios::setstate(_State);
- return (*this);
- }
- _Myt& operator<<(short _Val)
- {
- ios_base::iostate _State = ios_base::goodbit;
- const sentry _Ok(*this);
- if (_Ok)
- {
- const _Nput& _Nput_fac = use_facet<_Nput >(ios_base::getloc());
- ios_base::fmtflags _Bfl =
- ios_base::flags() & ios_base::basefield;
- long _Tmp = (_Bfl == ios_base::oct
- || _Bfl == ios_base::hex)
- ? (long)(unsigned short)_Val : (long)_Val;
- try {
- if (_Nput_fac.put(_Iter(_Myios::rdbuf()), *this,
- _Myios::fill(), _Tmp).failed())
- _State |= ios_base::badbit;
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- _Myios::setstate(_State);
- return (*this);
- }
-
@@ -135256,347 +186259,64 @@
- _Myt& operator<<(unsigned short _Val)
- {
- ios_base::iostate _State = ios_base::goodbit;
- const sentry _Ok(*this);
- if (_Ok)
- {
- const _Nput& _Nput_fac = use_facet<_Nput >(ios_base::getloc());
- try {
- if (_Nput_fac.put(_Iter(_Myios::rdbuf()), *this,
- _Myios::fill(), (unsigned long)_Val).failed())
- _State |= ios_base::badbit;
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- _Myios::setstate(_State);
- return (*this);
- }
- _Myt& operator<<(int _Val)
- {
- ios_base::iostate _State = ios_base::goodbit;
- const sentry _Ok(*this);
- if (_Ok)
- {
- const _Nput& _Nput_fac = use_facet<_Nput >(ios_base::getloc());
- ios_base::fmtflags _Bfl =
- ios_base::flags() & ios_base::basefield;
- long _Tmp = (_Bfl == ios_base::oct
- || _Bfl == ios_base::hex)
- ? (long)(unsigned int)_Val : (long)_Val;
- try {
- if (_Nput_fac.put(_Iter(_Myios::rdbuf()), *this,
- _Myios::fill(), _Tmp).failed())
- _State |= ios_base::badbit;
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- _Myios::setstate(_State);
- return (*this);
- }
- _Myt& operator<<(unsigned int __w64 _Val)
- {
- ios_base::iostate _State = ios_base::goodbit;
- const sentry _Ok(*this);
- if (_Ok)
- {
- const _Nput& _Nput_fac = use_facet<_Nput >(ios_base::getloc());
- try {
- if (_Nput_fac.put(_Iter(_Myios::rdbuf()), *this,
- _Myios::fill(), (unsigned long)_Val).failed())
- _State |= ios_base::badbit;
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- _Myios::setstate(_State);
- return (*this);
- }
- _Myt& operator<<(long _Val)
- {
- ios_base::iostate _State = ios_base::goodbit;
- const sentry _Ok(*this);
- if (_Ok)
- {
- const _Nput& _Nput_fac = use_facet<_Nput >(ios_base::getloc());
- try {
- if (_Nput_fac.put(_Iter(_Myios::rdbuf()), *this,
- _Myios::fill(), _Val).failed())
- _State |= ios_base::badbit;
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- _Myios::setstate(_State);
- return (*this);
- }
- _Myt& operator<<(unsigned long __w64 _Val)
- {
- ios_base::iostate _State = ios_base::goodbit;
- const sentry _Ok(*this);
- if (_Ok)
- {
- const _Nput& _Nput_fac = use_facet<_Nput >(ios_base::getloc());
- try {
- if (_Nput_fac.put(_Iter(_Myios::rdbuf()), *this,
- _Myios::fill(), (unsigned long)_Val).failed())
- _State |= ios_base::badbit;
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- _Myios::setstate(_State);
- return (*this);
- }
-
- _Myt& operator<<(__int64 _Val)
- {
- ios_base::iostate _State = ios_base::goodbit;
- const sentry _Ok(*this);
- if (_Ok)
- {
- const _Nput& _Nput_fac = use_facet<_Nput >(ios_base::getloc());
- try {
- if (_Nput_fac.put(_Iter(_Myios::rdbuf()), *this,
- _Myios::fill(), _Val).failed())
- _State |= ios_base::badbit;
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- _Myios::setstate(_State);
- return (*this);
- }
- _Myt& operator<<(unsigned __int64 _Val)
- {
- ios_base::iostate _State = ios_base::goodbit;
- const sentry _Ok(*this);
- if (_Ok)
- {
- const _Nput& _Nput_fac = use_facet<_Nput >(ios_base::getloc());
- try {
- if (_Nput_fac.put(_Iter(_Myios::rdbuf()), *this,
- _Myios::fill(), _Val).failed())
- _State |= ios_base::badbit;
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- _Myios::setstate(_State);
- return (*this);
- }
-
- _Myt& operator<<(float _Val)
- {
- ios_base::iostate _State = ios_base::goodbit;
- const sentry _Ok(*this);
- if (_Ok)
- {
- const _Nput& _Nput_fac = use_facet<_Nput >(ios_base::getloc());
- try {
- if (_Nput_fac.put(_Iter(_Myios::rdbuf()), *this,
- _Myios::fill(), (double)_Val).failed())
- _State |= ios_base::badbit;
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- _Myios::setstate(_State);
- return (*this);
- }
- _Myt& operator<<(double _Val)
- {
- ios_base::iostate _State = ios_base::goodbit;
- const sentry _Ok(*this);
- if (_Ok)
- {
- const _Nput& _Nput_fac = use_facet<_Nput >(ios_base::getloc());
- try {
- if (_Nput_fac.put(_Iter(_Myios::rdbuf()), *this,
- _Myios::fill(), _Val).failed())
- _State |= ios_base::badbit;
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- _Myios::setstate(_State);
- return (*this);
- }
- _Myt& operator<<(long double _Val)
- {
- ios_base::iostate _State = ios_base::goodbit;
- const sentry _Ok(*this);
- if (_Ok)
- {
- const _Nput& _Nput_fac = use_facet<_Nput >(ios_base::getloc());
- try {
- if (_Nput_fac.put(_Iter(_Myios::rdbuf()), *this,
- _Myios::fill(), _Val).failed())
- _State |= ios_base::badbit;
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- _Myios::setstate(_State);
- return (*this);
- }
- _Myt& operator<<(const void *_Val)
- {
- ios_base::iostate _State = ios_base::goodbit;
- const sentry _Ok(*this);
- if (_Ok)
- {
- const _Nput& _Nput_fac = use_facet<_Nput >(ios_base::getloc());
- try {
- if (_Nput_fac.put(_Iter(_Myios::rdbuf()), *this,
- _Myios::fill(), _Val).failed())
- _State |= ios_base::badbit;
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- _Myios::setstate(_State);
- return (*this);
- }
- _Myt& operator<<(_Mysb *_Strbuf)
- {
- ios_base::iostate _State = ios_base::goodbit;
- bool _Copied = false;
- const sentry _Ok(*this);
- if (_Ok && _Strbuf != 0)
- for (int_type _Meta = _Traits::eof(); ; _Copied = true)
- {
- try {
- _Meta = _Traits::eq_int_type(_Traits::eof(), _Meta)
- ? _Strbuf->sgetc() : _Strbuf->snextc();
- } catch (...) {
- _Myios::setstate(ios_base::failbit);
- throw;
- }
- if (_Traits::eq_int_type(_Traits::eof(), _Meta))
- break;
- try {
- if (_Traits::eq_int_type(_Traits::eof(),
- _Myios::rdbuf()->sputc(
- _Traits::to_char_type(_Meta))))
- {
- _State |= ios_base::badbit;
- break;
- }
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- ios_base::width(0);
- _Myios::setstate(_Strbuf == 0 ? ios_base::badbit
- : !_Copied ? _State | ios_base::failbit : _State);
- return (*this);
- }
- _Myt& put(_Elem _Ch)
- {
- ios_base::iostate _State = ios_base::goodbit;
- const sentry _Ok(*this);
- if (!_Ok)
- _State |= ios_base::badbit;
- else
- {
- try {
- if (_Traits::eq_int_type(_Traits::eof(),
- _Myios::rdbuf()->sputc(_Ch)))
- _State |= ios_base::badbit;
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- _Myios::setstate(_State);
- return (*this);
- }
- _Myt& write(const _Elem *_Str,
- streamsize _Count)
- {
- ;
- ios_base::iostate _State = ios_base::goodbit;
- const sentry _Ok(*this);
- if (!_Ok)
- _State |= ios_base::badbit;
- else
- {
- try {
- if (_Myios::rdbuf()->sputn(_Str, _Count) != _Count)
- _State |= ios_base::badbit;
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- _Myios::setstate(_State);
- return (*this);
- }
- _Myt& flush()
- {
- ios_base::iostate _State = ios_base::goodbit;
- if (!ios_base::fail() && _Myios::rdbuf()->pubsync() == -1)
- _State |= ios_base::badbit;
- _Myios::setstate(_State);
- return (*this);
- }
- _Myt& seekp(pos_type _Pos)
- {
- if (!ios_base::fail()
- && (off_type)_Myios::rdbuf()->pubseekpos(_Pos,
- ios_base::out) == _BADOFF)
- _Myios::setstate(ios_base::failbit);
- return (*this);
- }
- _Myt& seekp(off_type _Off, ios_base::seekdir _Way)
- {
- if (!ios_base::fail()
- && (off_type)_Myios::rdbuf()->pubseekoff(_Off, _Way,
- ios_base::out) == _BADOFF)
- _Myios::setstate(ios_base::failbit);
- return (*this);
- }
- pos_type tellp()
- {
- if (!ios_base::fail())
- return (_Myios::rdbuf()->pubseekoff(0,
- ios_base::cur, ios_base::out));
- else
- return (pos_type(_BADOFF));
- }
- };
@@ -135652,7 +186372,6 @@
-
@@ -135661,381 +186380,61 @@
-
- template<class _Elem,
- class _Traits> inline
- basic_ostream<_Elem, _Traits>& __cdecl operator<<(
- basic_ostream<_Elem, _Traits>& _Ostr, const char *_Val)
- {
- ios_base::iostate _State = ios_base::goodbit;
- streamsize _Count = (streamsize)::strlen(_Val);
- streamsize _Pad = _Ostr.width() <= 0 || _Ostr.width() <= _Count
- ? 0 : _Ostr.width() - _Count;
- const typename basic_ostream<_Elem, _Traits>::sentry _Ok(_Ostr);
- if (!_Ok)
- _State |= ios_base::badbit;
- else
- {
- try {
- const ctype<_Elem>& _Ctype_fac = use_facet<ctype<_Elem> >(_Ostr.getloc());
- if ((_Ostr.flags() & ios_base::adjustfield) != ios_base::left)
- for (; 0 < _Pad; --_Pad)
- if (_Traits::eq_int_type(_Traits::eof(),
- _Ostr.rdbuf()->sputc(_Ostr.fill())))
- {
- _State |= ios_base::badbit;
- break;
- }
- for (; _State == ios_base::goodbit && 0 < _Count; --_Count, ++_Val)
- if (_Traits::eq_int_type(_Traits::eof(),
- _Ostr.rdbuf()->sputc(_Ctype_fac.widen(*_Val))))
- _State |= ios_base::badbit;
- if (_State == ios_base::goodbit)
- for (; 0 < _Pad; --_Pad)
- if (_Traits::eq_int_type(_Traits::eof(),
- _Ostr.rdbuf()->sputc(_Ostr.fill())))
- {
- _State |= ios_base::badbit;
- break;
- }
- _Ostr.width(0);
- } catch (...) { (_Ostr).setstate(ios_base::badbit, true); }
- }
- _Ostr.setstate(_State);
- return (_Ostr);
- }
-template<class _Elem,
- class _Traits> inline
- basic_ostream<_Elem, _Traits>& __cdecl operator<<(
- basic_ostream<_Elem, _Traits>& _Ostr, char _Ch)
- {
- ios_base::iostate _State = ios_base::goodbit;
- const typename basic_ostream<_Elem, _Traits>::sentry _Ok(_Ostr);
- if (_Ok)
- {
- const ctype<_Elem>& _Ctype_fac = use_facet<ctype<_Elem> >(_Ostr.getloc());
- streamsize _Pad = _Ostr.width() <= 1 ? 0 : _Ostr.width() - 1;
- try {
- if ((_Ostr.flags() & ios_base::adjustfield) != ios_base::left)
- for (; _State == ios_base::goodbit && 0 < _Pad;
- --_Pad)
- if (_Traits::eq_int_type(_Traits::eof(),
- _Ostr.rdbuf()->sputc(_Ostr.fill())))
- _State |= ios_base::badbit;
- if (_State == ios_base::goodbit
- && _Traits::eq_int_type(_Traits::eof(),
- _Ostr.rdbuf()->sputc(_Ctype_fac.widen(_Ch))))
- _State |= ios_base::badbit;
- for (; _State == ios_base::goodbit && 0 < _Pad;
- --_Pad)
- if (_Traits::eq_int_type(_Traits::eof(),
- _Ostr.rdbuf()->sputc(_Ostr.fill())))
- _State |= ios_base::badbit;
- } catch (...) { (_Ostr).setstate(ios_base::badbit, true); }
- }
- _Ostr.width(0);
- _Ostr.setstate(_State);
- return (_Ostr);
- }
-template<class _Traits> inline
- basic_ostream<char, _Traits>& __cdecl operator<<(
- basic_ostream<char, _Traits>& _Ostr,
- const char *_Val)
- {
- typedef char _Elem;
- typedef basic_ostream<_Elem, _Traits> _Myos;
- ios_base::iostate _State = ios_base::goodbit;
- streamsize _Count = (streamsize)_Traits::length(_Val);
- streamsize _Pad = _Ostr.width() <= 0 || _Ostr.width() <= _Count
- ? 0 : _Ostr.width() - _Count;
- const typename _Myos::sentry _Ok(_Ostr);
- if (!_Ok)
- _State |= ios_base::badbit;
- else
- {
- try {
- if ((_Ostr.flags() & ios_base::adjustfield) != ios_base::left)
- for (; 0 < _Pad; --_Pad)
- if (_Traits::eq_int_type(_Traits::eof(),
- _Ostr.rdbuf()->sputc(_Ostr.fill())))
- {
- _State |= ios_base::badbit;
- break;
- }
- if (_State == ios_base::goodbit
- && _Ostr.rdbuf()->sputn(_Val, _Count) != _Count)
- _State |= ios_base::badbit;
- if (_State == ios_base::goodbit)
- for (; 0 < _Pad; --_Pad)
- if (_Traits::eq_int_type(_Traits::eof(),
- _Ostr.rdbuf()->sputc(_Ostr.fill())))
- {
- _State |= ios_base::badbit;
- break;
- }
- _Ostr.width(0);
- } catch (...) { (_Ostr).setstate(ios_base::badbit, true); }
- }
- _Ostr.setstate(_State);
- return (_Ostr);
- }
-template<class _Traits> inline
- basic_ostream<char, _Traits>& __cdecl operator<<(
- basic_ostream<char, _Traits>& _Ostr, char _Ch)
- {
- typedef char _Elem;
- typedef basic_ostream<_Elem, _Traits> _Myos;
- ios_base::iostate _State = ios_base::goodbit;
- const typename _Myos::sentry _Ok(_Ostr);
- if (_Ok)
- {
- streamsize _Pad = _Ostr.width() <= 1 ? 0 : _Ostr.width() - 1;
- try {
- if ((_Ostr.flags() & ios_base::adjustfield) != ios_base::left)
- for (; _State == ios_base::goodbit && 0 < _Pad;
- --_Pad)
- if (_Traits::eq_int_type(_Traits::eof(),
- _Ostr.rdbuf()->sputc(_Ostr.fill())))
- _State |= ios_base::badbit;
- if (_State == ios_base::goodbit
- && _Traits::eq_int_type(_Traits::eof(),
- _Ostr.rdbuf()->sputc(_Ch)))
- _State |= ios_base::badbit;
- for (; _State == ios_base::goodbit && 0 < _Pad;
- --_Pad)
- if (_Traits::eq_int_type(_Traits::eof(),
- _Ostr.rdbuf()->sputc(_Ostr.fill())))
- _State |= ios_base::badbit;
- } catch (...) { (_Ostr).setstate(ios_base::badbit, true); }
- }
- _Ostr.width(0);
- _Ostr.setstate(_State);
- return (_Ostr);
- }
-template<class _Elem,
- class _Traits> inline
- basic_ostream<_Elem, _Traits>& __cdecl operator<<(
- basic_ostream<_Elem, _Traits>& _Ostr, const _Elem *_Val)
- {
- typedef basic_ostream<_Elem, _Traits> _Myos;
- ios_base::iostate _State = ios_base::goodbit;
- streamsize _Count = (streamsize)_Traits::length(_Val);
- streamsize _Pad = _Ostr.width() <= 0 || _Ostr.width() <= _Count
- ? 0 : _Ostr.width() - _Count;
- const typename _Myos::sentry _Ok(_Ostr);
- if (!_Ok)
- _State |= ios_base::badbit;
- else
- {
- try {
- if ((_Ostr.flags() & ios_base::adjustfield) != ios_base::left)
- for (; 0 < _Pad; --_Pad)
- if (_Traits::eq_int_type(_Traits::eof(),
- _Ostr.rdbuf()->sputc(_Ostr.fill())))
- {
- _State |= ios_base::badbit;
- break;
- }
- if (_State == ios_base::goodbit
- && _Ostr.rdbuf()->sputn(_Val, _Count) != _Count)
- _State |= ios_base::badbit;
- if (_State == ios_base::goodbit)
- for (; 0 < _Pad; --_Pad)
- if (_Traits::eq_int_type(_Traits::eof(),
- _Ostr.rdbuf()->sputc(_Ostr.fill())))
- {
- _State |= ios_base::badbit;
- break;
- }
- _Ostr.width(0);
- } catch (...) { (_Ostr).setstate(ios_base::badbit, true); }
- }
- _Ostr.setstate(_State);
- return (_Ostr);
- }
-template<class _Elem,
- class _Traits> inline
- basic_ostream<_Elem, _Traits>& __cdecl operator<<(
- basic_ostream<_Elem, _Traits>& _Ostr, _Elem _Ch)
- {
- typedef basic_ostream<_Elem, _Traits> _Myos;
- ios_base::iostate _State = ios_base::goodbit;
- const typename _Myos::sentry _Ok(_Ostr);
- if (_Ok)
- {
- streamsize _Pad = _Ostr.width() <= 1 ? 0 : _Ostr.width() - 1;
- try {
- if ((_Ostr.flags() & ios_base::adjustfield) != ios_base::left)
- for (; _State == ios_base::goodbit && 0 < _Pad;
- --_Pad)
- if (_Traits::eq_int_type(_Traits::eof(),
- _Ostr.rdbuf()->sputc(_Ostr.fill())))
- _State |= ios_base::badbit;
- if (_State == ios_base::goodbit
- && _Traits::eq_int_type(_Traits::eof(),
- _Ostr.rdbuf()->sputc(_Ch)))
- _State |= ios_base::badbit;
- for (; _State == ios_base::goodbit && 0 < _Pad;
- --_Pad)
- if (_Traits::eq_int_type(_Traits::eof(),
- _Ostr.rdbuf()->sputc(_Ostr.fill())))
- _State |= ios_base::badbit;
- } catch (...) { (_Ostr).setstate(ios_base::badbit, true); }
- }
- _Ostr.width(0);
- _Ostr.setstate(_State);
- return (_Ostr);
- }
-template<class _Traits> inline
- basic_ostream<char, _Traits>& __cdecl operator<<(
- basic_ostream<char, _Traits>& _Ostr, const signed char *_Val)
- {
- return (_Ostr << (const char *)_Val);
- }
-template<class _Traits> inline
- basic_ostream<char, _Traits>& __cdecl operator<<(
- basic_ostream<char, _Traits>& _Ostr, signed char _Ch)
- {
- return (_Ostr << (char)_Ch);
- }
-template<class _Traits> inline
- basic_ostream<char, _Traits>& __cdecl operator<<(
- basic_ostream<char, _Traits>& _Ostr, const unsigned char *_Val)
- {
- return (_Ostr << (const char *)_Val);
- }
-template<class _Traits> inline
- basic_ostream<char, _Traits>& __cdecl operator<<(
- basic_ostream<char, _Traits>& _Ostr, unsigned char _Ch)
- {
- return (_Ostr << (char)_Ch);
- }
-
-template<class _Elem,
- class _Traits> inline
- basic_ostream<_Elem, _Traits>&
- __cdecl endl(basic_ostream<_Elem, _Traits>& _Ostr)
- {
- _Ostr.put(_Ostr.widen('\n'));
- _Ostr.flush();
- return (_Ostr);
- }
-template<class _Elem,
- class _Traits> inline
- basic_ostream<_Elem, _Traits>&
- __cdecl ends(basic_ostream<_Elem, _Traits>& _Ostr)
- {
- _Ostr.put(_Elem());
- return (_Ostr);
- }
-template<class _Elem,
- class _Traits> inline
- basic_ostream<_Elem, _Traits>&
- __cdecl flush(basic_ostream<_Elem, _Traits>& _Ostr)
- {
- _Ostr.flush();
- return (_Ostr);
- }
- inline basic_ostream<char, char_traits<char> >&
- __cdecl endl(basic_ostream<char, char_traits<char> >& _Ostr)
- {
- _Ostr.put('\n');
- _Ostr.flush();
- return (_Ostr);
- }
- inline basic_ostream<wchar_t, char_traits<wchar_t> >&
- __cdecl endl(basic_ostream<wchar_t,
- char_traits<wchar_t> >& _Ostr)
- {
- _Ostr.put('\n');
- _Ostr.flush();
- return (_Ostr);
- }
- inline basic_ostream<char, char_traits<char> >&
- __cdecl ends(basic_ostream<char, char_traits<char> >& _Ostr)
- {
- _Ostr.put('\0');
- return (_Ostr);
- }
- inline basic_ostream<wchar_t, char_traits<wchar_t> >&
- __cdecl ends(basic_ostream<wchar_t,
- char_traits<wchar_t> >& _Ostr)
- {
- _Ostr.put('\0');
- return (_Ostr);
- }
- inline basic_ostream<char, char_traits<char> >&
- __cdecl flush(basic_ostream<char, char_traits<char> >& _Ostr)
- {
- _Ostr.flush();
- return (_Ostr);
- }
- inline basic_ostream<wchar_t, char_traits<wchar_t> >&
- __cdecl flush(basic_ostream<wchar_t,
- char_traits<wchar_t> >& _Ostr)
- {
- _Ostr.flush();
- return (_Ostr);
- }
-
-}
-#pragma warning(pop)
-#pragma pack(pop)
@@ -136049,129 +186448,28 @@
-#pragma pack(push,8)
-#pragma warning(push,3)
-namespace std {
-
-template<class _Elem,
- class _Traits>
- class basic_istream
- : virtual public basic_ios<_Elem, _Traits>
- {
-public:
- typedef basic_istream<_Elem, _Traits> _Myt;
- typedef basic_ios<_Elem, _Traits> _Myios;
- typedef basic_streambuf<_Elem, _Traits> _Mysb;
- typedef istreambuf_iterator<_Elem, _Traits> _Iter;
- typedef ctype<_Elem> _Ctype;
- typedef num_get<_Elem, _Iter> _Nget;
- explicit basic_istream(_Mysb *_Strbuf, bool _Isstd = false)
- : _Chcount(0)
- {
- _Myios::init(_Strbuf, _Isstd);
- }
- basic_istream(_Uninitialized)
- {
- ios_base::_Addstd(this);
- }
- virtual ~basic_istream()
- {
- }
- typedef typename _Traits::int_type int_type;
- typedef typename _Traits::pos_type pos_type;
- typedef typename _Traits::off_type off_type;
-
- class _Sentry_base
- {
- public:
- _Sentry_base(_Myt& _Istr)
- : _Myistr(_Istr)
- {
- if (_Myistr.rdbuf() != 0)
- _Myistr.rdbuf()->_Lock();
- }
- ~_Sentry_base()
- {
- if (_Myistr.rdbuf() != 0)
- _Myistr.rdbuf()->_Unlock();
- }
- _Myt& _Myistr;
- };
- class sentry
- : public _Sentry_base
- {
- public:
- explicit sentry(_Myt& _Istr, bool _Noskip = false)
- : _Sentry_base(_Istr)
- {
- _Ok = this->_Myistr._Ipfx(_Noskip);
- }
- operator bool() const
- {
- return (_Ok);
- }
- private:
- sentry(const sentry&);
- sentry& operator=(const sentry&);
- bool _Ok;
- };
- bool _Ipfx(bool _Noskip = false)
- {
- if (ios_base::good())
- {
- if (_Myios::tie() != 0)
- _Myios::tie()->flush();
- if (!_Noskip && ios_base::flags() & ios_base::skipws)
- {
- const _Ctype& _Ctype_fac = use_facet<_Ctype >(ios_base::getloc());
- try {
- int_type _Meta = _Myios::rdbuf()->sgetc();
- for (; ; _Meta = _Myios::rdbuf()->snextc())
- if (_Traits::eq_int_type(_Traits::eof(), _Meta))
- {
- _Myios::setstate(ios_base::eofbit);
- break;
- }
- else if (!_Ctype_fac.is(_Ctype::space,
- _Traits::to_char_type(_Meta)))
- break;
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- if (ios_base::good())
- return (true);
- }
- _Myios::setstate(ios_base::failbit);
- return (false);
- }
- bool ipfx(bool _Noskip = false)
- {
- return _Ipfx(_Noskip);
- }
- void isfx()
- {
- }
@@ -136195,72 +186493,18 @@
- _Myt& operator>>(_Myt& (__cdecl *_Pfn)(_Myt&))
- {
- ;
- return ((*_Pfn)(*this));
- }
- _Myt& operator>>(_Myios& (__cdecl *_Pfn)(_Myios&))
- {
- ;
- (*_Pfn)(*(_Myios *)this);
- return (*this);
- }
- _Myt& operator>>(ios_base& (__cdecl *_Pfn)(ios_base&))
- {
- ;
- (*_Pfn)(*(ios_base *)this);
- return (*this);
- }
- _Myt& operator>>(_Bool& _Val)
- {
- ios_base::iostate _State = ios_base::goodbit;
- const sentry _Ok(*this);
- if (_Ok)
- {
- const _Nget& _Nget_fac = use_facet<_Nget >(ios_base::getloc());
- try {
- _Nget_fac.get(_Iter(_Myios::rdbuf()), _Iter(0),
- *this, _State, _Val);
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- _Myios::setstate(_State);
- return (*this);
- }
- _Myt& operator>>(short& _Val)
- {
- ios_base::iostate _State = ios_base::goodbit;
- const sentry _Ok(*this);
- if (_Ok)
- {
- long _Tmp = 0;
- const _Nget& _Nget_fac = use_facet<_Nget >(ios_base::getloc());
- try {
- _Nget_fac.get(_Iter(_Myios::rdbuf()), _Iter(0),
- *this, _State, _Tmp);
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- if (_State & ios_base::failbit
- || _Tmp < (-32768) || 32767 < _Tmp)
- _State |= ios_base::failbit;
- else
- _Val = (short)_Tmp;
- }
- _Myios::setstate(_State);
- return (*this);
- }
-
@@ -136268,621 +186512,98 @@
- _Myt& operator>>(unsigned short& _Val)
- {
- ios_base::iostate _State = ios_base::goodbit;
- const sentry _Ok(*this);
- if (_Ok)
- {
- const _Nget& _Nget_fac = use_facet<_Nget >(ios_base::getloc());
- try {
- _Nget_fac.get(_Iter(_Myios::rdbuf()), _Iter(0),
- *this, _State, _Val);
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- _Myios::setstate(_State);
- return (*this);
- }
- _Myt& operator>>(int& _Val)
- {
- ios_base::iostate _State = ios_base::goodbit;
- const sentry _Ok(*this);
- if (_Ok)
- {
- long _Tmp = 0;
- const _Nget& _Nget_fac = use_facet<_Nget >(ios_base::getloc());
- try {
- _Nget_fac.get(_Iter(_Myios::rdbuf()), _Iter(0),
- *this, _State, _Tmp);
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- if (_State & ios_base::failbit
- || _Tmp < (-2147483647 - 1) || 2147483647 < _Tmp)
- _State |= ios_base::failbit;
- else
- _Val = _Tmp;
- }
- _Myios::setstate(_State);
- return (*this);
- }
- _Myt& operator>>(unsigned int& _Val)
- {
- ios_base::iostate _State = ios_base::goodbit;
- const sentry _Ok(*this);
- if (_Ok)
- {
- const _Nget& _Nget_fac = use_facet<_Nget >(ios_base::getloc());
- try {
- _Nget_fac.get(_Iter(_Myios::rdbuf()), _Iter(0),
- *this, _State, _Val);
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- _Myios::setstate(_State);
- return (*this);
- }
- _Myt& operator>>(long& _Val)
- {
- ios_base::iostate _State = ios_base::goodbit;
- const sentry _Ok(*this);
- if (_Ok)
- {
- const _Nget& _Nget_fac = use_facet<_Nget >(ios_base::getloc());
- try {
- _Nget_fac.get(_Iter(_Myios::rdbuf()), _Iter(0),
- *this, _State, _Val);
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- _Myios::setstate(_State);
- return (*this);
- }
- _Myt& operator>>(unsigned long __w64& _Val)
- {
- ios_base::iostate _State = ios_base::goodbit;
- const sentry _Ok(*this);
- if (_Ok)
- {
- const _Nget& _Nget_fac = use_facet<_Nget >(ios_base::getloc());
- try {
- _Nget_fac.get(_Iter(_Myios::rdbuf()), _Iter(0),
- *this, _State, (unsigned long)_Val);
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- _Myios::setstate(_State);
- return (*this);
- }
-
- _Myt& operator>>(__int64& _Val)
- {
- ios_base::iostate _State = ios_base::goodbit;
- const sentry _Ok(*this);
- if (_Ok)
- {
- const _Nget& _Nget_fac = use_facet<_Nget >(ios_base::getloc());
- try {
- _Nget_fac.get(_Iter(_Myios::rdbuf()), _Iter(0),
- *this, _State, _Val);
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- _Myios::setstate(_State);
- return (*this);
- }
- _Myt& operator>>(unsigned __int64& _Val)
- {
- ios_base::iostate _State = ios_base::goodbit;
- const sentry _Ok(*this);
- if (_Ok)
- {
- const _Nget& _Nget_fac = use_facet<_Nget >(ios_base::getloc());
- try {
- _Nget_fac.get(_Iter(_Myios::rdbuf()), _Iter(0),
- *this, _State, _Val);
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- _Myios::setstate(_State);
- return (*this);
- }
-
- _Myt& operator>>(float& _Val)
- {
- ios_base::iostate _State = ios_base::goodbit;
- const sentry _Ok(*this);
- if (_Ok)
- {
- const _Nget& _Nget_fac = use_facet<_Nget >(ios_base::getloc());
- try {
- _Nget_fac.get(_Iter(_Myios::rdbuf()), _Iter(0),
- *this, _State, _Val);
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- _Myios::setstate(_State);
- return (*this);
- }
- _Myt& operator>>(double& _Val)
- {
- ios_base::iostate _State = ios_base::goodbit;
- const sentry _Ok(*this);
- if (_Ok)
- {
- const _Nget& _Nget_fac = use_facet<_Nget >(ios_base::getloc());
- try {
- _Nget_fac.get(_Iter(_Myios::rdbuf()), _Iter(0),
- *this, _State, _Val);
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- _Myios::setstate(_State);
- return (*this);
- }
- _Myt& operator>>(long double& _Val)
- {
- ios_base::iostate _State = ios_base::goodbit;
- const sentry _Ok(*this);
- if (_Ok)
- {
- const _Nget& _Nget_fac = use_facet<_Nget >(ios_base::getloc());
- try {
- _Nget_fac.get(_Iter(_Myios::rdbuf()), _Iter(0),
- *this, _State, _Val);
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- _Myios::setstate(_State);
- return (*this);
- }
- _Myt& operator>>(void *& _Val)
- {
- ios_base::iostate _State = ios_base::goodbit;
- const sentry _Ok(*this);
- if (_Ok)
- {
- const _Nget& _Nget_fac = use_facet<_Nget >(ios_base::getloc());
- try {
- _Nget_fac.get(_Iter(_Myios::rdbuf()), _Iter(0),
- *this, _State, _Val);
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- _Myios::setstate(_State);
- return (*this);
- }
- _Myt& operator>>(_Mysb *_Strbuf)
- {
- ios_base::iostate _State = ios_base::goodbit;
- bool _Copied = false;
- const sentry _Ok(*this);
- if (_Ok && _Strbuf != 0)
- {
- try {
- int_type _Meta = _Myios::rdbuf()->sgetc();
- for (; ; _Meta = _Myios::rdbuf()->snextc())
- if (_Traits::eq_int_type(_Traits::eof(), _Meta))
- {
- _State |= ios_base::eofbit;
- break;
- }
- else
- {
- try {
- if (_Traits::eq_int_type(_Traits::eof(),
- _Strbuf->sputc(_Traits::to_char_type(_Meta))))
- break;
- } catch (...) {
- break;
- }
- _Copied = true;
- }
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- _Myios::setstate(!_Copied ? _State | ios_base::failbit : _State);
- return (*this);
- }
- int_type get()
- {
- int_type _Meta = 0;
- ios_base::iostate _State = ios_base::goodbit;
- _Chcount = 0;
- const sentry _Ok(*this, true);
- if (!_Ok)
- _Meta = _Traits::eof();
- else
- {
- try {
- _Meta = _Myios::rdbuf()->sbumpc();
- if (_Traits::eq_int_type(_Traits::eof(), _Meta))
- _State |= ios_base::eofbit | ios_base::failbit;
- else
- ++_Chcount;
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- _Myios::setstate(_State);
- return (_Meta);
- }
- _Myt& get(_Elem *_Str, streamsize _Count)
- {
- return (get(_Str, _Count, _Myios::widen('\n')));
- }
- _Myt& get(_Elem *_Str,
- streamsize _Count, _Elem _Delim)
- {
- ;
- ios_base::iostate _State = ios_base::goodbit;
- _Chcount = 0;
- const sentry _Ok(*this, true);
- if (_Ok && 0 < _Count)
- {
- try {
- int_type _Meta = _Myios::rdbuf()->sgetc();
- for (; 0 < --_Count; _Meta = _Myios::rdbuf()->snextc())
- if (_Traits::eq_int_type(_Traits::eof(), _Meta))
- {
- _State |= ios_base::eofbit;
- break;
- }
- else if (_Traits::to_char_type(_Meta) == _Delim)
- break;
- else
- {
- *_Str++ = _Traits::to_char_type(_Meta);
- ++_Chcount;
- }
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- _Myios::setstate(_Chcount == 0
- ? _State | ios_base::failbit : _State);
- *_Str = _Elem();
- return (*this);
- }
- _Myt& get(_Elem& _Ch)
- {
- int_type _Meta = get();
- if (!_Traits::eq_int_type(_Traits::eof(), _Meta))
- _Ch = _Traits::to_char_type(_Meta);
- return (*this);
- }
- _Myt& get(_Mysb& _Strbuf)
- {
- return (get(_Strbuf, _Myios::widen('\n')));
- }
- _Myt& get(_Mysb& _Strbuf, _Elem _Delim)
- {
- ios_base::iostate _State = ios_base::goodbit;
- _Chcount = 0;
- const sentry _Ok(*this, true);
- if (_Ok)
- {
- try {
- int_type _Meta = _Myios::rdbuf()->sgetc();
- for (; ; _Meta = _Myios::rdbuf()->snextc())
- if (_Traits::eq_int_type(_Traits::eof(), _Meta))
- {
- _State |= ios_base::eofbit;
- break;
- }
- else
- {
- try {
- _Elem _Ch = _Traits::to_char_type(_Meta);
- if (_Ch == _Delim
- || _Traits::eq_int_type(_Traits::eof(),
- _Strbuf.sputc(_Ch)))
- break;
- } catch (...) {
- break;
- }
- ++_Chcount;
- }
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- if (_Chcount == 0)
- _State |= ios_base::failbit;
- _Myios::setstate(_State);
- return (*this);
- }
- _Myt& getline(_Elem *_Str, streamsize _Count)
- {
- return (getline(_Str, _Count, _Myios::widen('\n')));
- }
- _Myt& getline(_Elem *_Str,
- streamsize _Count, _Elem _Delim)
- {
- ;
- ios_base::iostate _State = ios_base::goodbit;
- _Chcount = 0;
- const sentry _Ok(*this, true);
- if (_Ok && 0 < _Count)
- {
- int_type _Metadelim = _Traits::to_int_type(_Delim);
- try {
- int_type _Meta = _Myios::rdbuf()->sgetc();
- for (; ; _Meta = _Myios::rdbuf()->snextc())
- if (_Traits::eq_int_type(_Traits::eof(), _Meta))
- {
- _State |= ios_base::eofbit;
- break;
- }
- else if (_Meta == _Metadelim)
- {
- ++_Chcount;
- _Myios::rdbuf()->sbumpc();
- break;
- }
- else if (--_Count <= 0)
- {
- _State |= ios_base::failbit;
- break;
- }
- else
- {
- ++_Chcount;
- *_Str++ = _Traits::to_char_type(_Meta);
- }
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- *_Str = _Elem();
- _Myios::setstate(_Chcount == 0 ? _State | ios_base::failbit : _State);
- return (*this);
- }
- _Myt& ignore(streamsize _Count = 1,
- int_type _Metadelim = _Traits::eof())
- {
- ios_base::iostate _State = ios_base::goodbit;
- _Chcount = 0;
- const sentry _Ok(*this, true);
- if (_Ok && 0 < _Count)
- {
- try {
- for (; ; )
- {
- int_type _Meta;
- if (_Count != 2147483647 && --_Count < 0)
- break;
- else if (_Traits::eq_int_type(_Traits::eof(),
- _Meta = _Myios::rdbuf()->sbumpc()))
- {
- _State |= ios_base::eofbit;
- break;
- }
- else
- {
- ++_Chcount;
- if (_Meta == _Metadelim)
- break;
- }
- }
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- _Myios::setstate(_State);
- return (*this);
- }
- _Myt& _Read_s(_Elem *_Str, size_t _Str_size, streamsize _Count)
- {
- ;
- ios_base::iostate _State = ios_base::goodbit;
- _Chcount = 0;
- const sentry _Ok(*this, true);
- if (_Ok)
- {
- try {
- const streamsize _Num = _Myios::rdbuf()->_Sgetn_s(_Str, _Str_size, _Count);
- _Chcount += _Num;
- if (_Num != _Count)
- _State |= ios_base::eofbit | ios_base::failbit;
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- _Myios::setstate(_State);
- return (*this);
- }
- _Myt& read(_Elem *_Str, streamsize _Count)
- {
- return _Read_s(_Str, (size_t)-1, _Count);
- }
- streamsize _Readsome_s(_Elem *_Str, size_t _Str_size, streamsize _Count)
- {
- ;
- ios_base::iostate _State = ios_base::goodbit;
- _Chcount = 0;
- const sentry _Ok(*this, true);
- streamsize _Num;
- if (!_Ok)
- _State |= ios_base::failbit;
- else if ((_Num = _Myios::rdbuf()->in_avail()) < 0)
- _State |= ios_base::eofbit;
- else if (0 < _Num)
- _Read_s(_Str, _Str_size, _Num < _Count ? _Num : _Count);
- _Myios::setstate(_State);
- return (gcount());
- }
- __declspec(deprecated("You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library"))
- streamsize readsome(_Elem *_Str, streamsize _Count)
- {
- return _Readsome_s(_Str, (size_t)-1, _Count);
- }
- int_type peek()
- {
- ios_base::iostate _State = ios_base::goodbit;
- _Chcount = 0;
- int_type _Meta = 0;
- const sentry _Ok(*this, true);
- if (!_Ok)
- _Meta = _Traits::eof();
- else
- {
- try {
- if (_Traits::eq_int_type(_Traits::eof(),
- _Meta = _Myios::rdbuf()->sgetc()))
- _State |= ios_base::eofbit;
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- _Myios::setstate(_State);
- return (_Meta);
- }
- _Myt& putback(_Elem _Ch)
- {
- ios_base::iostate _State = ios_base::goodbit;
- _Chcount = 0;
- const sentry _Ok(*this, true);
- if (_Ok)
- {
- try {
- if (_Traits::eq_int_type(_Traits::eof(),
- _Myios::rdbuf()->sputbackc(_Ch)))
- _State |= ios_base::badbit;
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- _Myios::setstate(_State);
- return (*this);
- }
- _Myt& unget()
- {
- ios_base::iostate _State = ios_base::goodbit;
- _Chcount = 0;
- const sentry _Ok(*this, true);
- if (_Ok)
- {
- try {
- if (_Traits::eq_int_type(_Traits::eof(),
- _Myios::rdbuf()->sungetc()))
- _State |= ios_base::badbit;
- } catch (...) { _Myios::setstate(ios_base::badbit, true); }
- }
- _Myios::setstate(_State);
- return (*this);
- }
- streamsize gcount() const
- {
- return (_Chcount);
- }
- int sync()
- {
- ios_base::iostate _State = ios_base::goodbit;
- int _Ans;
- if (_Myios::rdbuf() == 0)
- _Ans = -1;
- else if (_Myios::rdbuf()->pubsync() == -1)
- {
- _State |= ios_base::badbit;
- _Ans = -1;
- }
- else
- _Ans = 0;
- _Myios::setstate(_State);
- return (_Ans);
- }
- _Myt& seekg(pos_type _Pos)
- {
- if (!ios_base::fail()
- && (off_type)_Myios::rdbuf()->pubseekpos(_Pos,
- ios_base::in) == _BADOFF)
- _Myios::setstate(ios_base::failbit);
- return (*this);
- }
- _Myt& seekg(off_type _Off, ios_base::seekdir _Way)
- {
- if (!ios_base::fail()
- && (off_type)_Myios::rdbuf()->pubseekoff(_Off, _Way,
- ios_base::in) == _BADOFF)
- _Myios::setstate(ios_base::failbit);
- return (*this);
- }
- pos_type tellg()
- {
- if (!ios_base::fail())
- return (_Myios::rdbuf()->pubseekoff(0,
- ios_base::cur, ios_base::in));
- else
- return (pos_type(_BADOFF));
- }
-private:
- streamsize _Chcount;
- };
@@ -136924,7 +186645,6 @@
-
@@ -136933,32 +186653,9 @@
-
-template<class _Elem,
- class _Traits>
- class basic_iostream
- : public basic_istream<_Elem, _Traits>,
- public basic_ostream<_Elem, _Traits>
- {
-public:
- typedef _Elem char_type;
- typedef _Traits traits_type;
- typedef typename _Traits::int_type int_type;
- typedef typename _Traits::pos_type pos_type;
- typedef typename _Traits::off_type off_type;
- explicit basic_iostream(basic_streambuf<_Elem, _Traits> *_Strbuf)
- : basic_istream<_Elem, _Traits>(_Strbuf, false),
- basic_ostream<_Elem, _Traits>(_Strbuf)
- {
- }
- virtual ~basic_iostream()
- {
- }
- };
-
@@ -136967,211 +186664,34 @@
-
-template<class _Elem,
- class _Traits> inline
- basic_istream<_Elem, _Traits>& __cdecl operator>>(
- basic_istream<_Elem, _Traits>& _Istr, _Elem *_Str)
- {
- ;
- typedef basic_istream<_Elem, _Traits> _Myis;
- typedef ctype<_Elem> _Ctype;
- ios_base::iostate _State = ios_base::goodbit;
- _Elem *_Str0 = _Str;
- const typename _Myis::sentry _Ok(_Istr);
- if (_Ok)
- {
- const _Ctype& _Ctype_fac = use_facet<_Ctype >(_Istr.getloc());
- try {
- streamsize _Count = 0 < _Istr.width() ? _Istr.width() : 2147483647;
- typename _Myis::int_type _Meta = _Istr.rdbuf()->sgetc();
- _Elem _Ch;
- for (; 0 < --_Count; _Meta = _Istr.rdbuf()->snextc())
- if (_Traits::eq_int_type(_Traits::eof(), _Meta))
- {
- _State |= ios_base::eofbit;
- break;
- }
- else if (_Ctype_fac.is(_Ctype::space,
- _Ch = _Traits::to_char_type(_Meta))
- || _Ch == _Elem())
- break;
- else
- *_Str++ = _Traits::to_char_type(_Meta);
- } catch (...) { (_Istr).setstate(ios_base::badbit, true); }
- }
- *_Str = _Elem();
- _Istr.width(0);
- _Istr.setstate(_Str == _Str0 ? _State | ios_base::failbit : _State);
- return (_Istr);
- }
-template<class _Elem,
- class _Traits> inline
- basic_istream<_Elem, _Traits>& __cdecl operator>>(
- basic_istream<_Elem, _Traits>& _Istr, _Elem& _Ch)
- {
- typedef basic_istream<_Elem, _Traits> _Myis;
- typename _Myis::int_type _Meta;
- ios_base::iostate _State = ios_base::goodbit;
- const typename _Myis::sentry _Ok(_Istr);
- if (_Ok)
- {
- try {
- _Meta = _Istr.rdbuf()->sbumpc();
- if (_Traits::eq_int_type(_Traits::eof(), _Meta))
- _State |= ios_base::eofbit | ios_base::failbit;
- else
- _Ch = _Traits::to_char_type(_Meta);
- } catch (...) { (_Istr).setstate(ios_base::badbit, true); }
- }
- _Istr.setstate(_State);
- return (_Istr);
- }
-template<class _Traits> inline
- basic_istream<char, _Traits>& __cdecl operator>>(
- basic_istream<char, _Traits>& _Istr, signed char *_Str)
- {
- return (_Istr >> (char *)_Str);
- }
-template<class _Traits> inline
- basic_istream<char, _Traits>& __cdecl operator>>(
- basic_istream<char, _Traits>& _Istr, signed char& _Ch)
- {
- return (_Istr >> (char&)_Ch);
- }
-template<class _Traits> inline
- basic_istream<char, _Traits>& __cdecl operator>>(
- basic_istream<char, _Traits>& _Istr, unsigned char *_Str)
- {
- return (_Istr >> (char *)_Str);
- }
-template<class _Traits> inline
- basic_istream<char, _Traits>& __cdecl operator>>(
- basic_istream<char, _Traits>& _Istr, unsigned char& _Ch)
- {
- return (_Istr >> (char&)_Ch);
- }
-
-template<class _Elem,
- class _Traits> inline
- basic_istream<_Elem, _Traits>&
- __cdecl ws(basic_istream<_Elem, _Traits>& _Istr)
- {
- typedef basic_istream<_Elem, _Traits> _Myis;
- typedef ctype<_Elem> _Ctype;
- if (!_Istr.eof())
- {
- ios_base::iostate _State = ios_base::goodbit;
- const typename _Myis::sentry _Ok(_Istr, true);
- if (_Ok)
- {
- const _Ctype& _Ctype_fac = use_facet<_Ctype >(_Istr.getloc());
- try {
- for (typename _Traits::int_type _Meta = _Istr.rdbuf()->sgetc(); ;
- _Meta = _Istr.rdbuf()->snextc())
- if (_Traits::eq_int_type(_Traits::eof(), _Meta))
- {
- _State |= ios_base::eofbit;
- break;
- }
- else if (!_Ctype_fac.is(_Ctype::space,
- _Traits::to_char_type(_Meta)))
- break;
- } catch (...) { (_Istr).setstate(ios_base::badbit, true); }
- }
- _Istr.setstate(_State);
- }
- return (_Istr);
- }
- inline basic_istream<char, char_traits<char> >&
- __cdecl ws(basic_istream<char, char_traits<char> >& _Istr)
- {
- typedef char _Elem;
- typedef char_traits<_Elem> _Traits;
- if (!_Istr.eof())
- {
- ios_base::iostate _State = ios_base::goodbit;
- const basic_istream<_Elem, _Traits>::sentry _Ok(_Istr, true);
- if (_Ok)
- {
- const ctype<_Elem>& _Ctype_fac =
- use_facet<ctype<_Elem> >(_Istr.getloc());
- try {
- for (_Traits::int_type _Meta = _Istr.rdbuf()->sgetc(); ;
- _Meta = _Istr.rdbuf()->snextc())
- if (_Traits::eq_int_type(_Traits::eof(), _Meta))
- {
- _State |= ios_base::eofbit;
- break;
- }
- else if (!_Ctype_fac.is(ctype<_Elem>::space,
- _Traits::to_char_type(_Meta)))
- break;
- } catch (...) { (_Istr).setstate(ios_base::badbit, true); }
- }
- _Istr.setstate(_State);
- }
- return (_Istr);
- }
- inline basic_istream<wchar_t, char_traits<wchar_t> >&
- __cdecl ws(basic_istream<wchar_t, char_traits<wchar_t> >& _Istr)
- {
- typedef wchar_t _Elem;
- typedef char_traits<_Elem> _Traits;
- if (!_Istr.eof())
- {
- ios_base::iostate _State = ios_base::goodbit;
- const basic_istream<_Elem, _Traits>::sentry _Ok(_Istr, true);
- if (_Ok)
- {
- const ctype<_Elem>& _Ctype_fac =
- use_facet<ctype<_Elem> >(_Istr.getloc());
- try {
- for (_Traits::int_type _Meta = _Istr.rdbuf()->sgetc(); ;
- _Meta = _Istr.rdbuf()->snextc())
- if (_Traits::eq_int_type(_Traits::eof(), _Meta))
- {
- _State |= ios_base::eofbit;
- break;
- }
- else if (!_Ctype_fac.is(ctype<_Elem>::space,
- _Traits::to_char_type(_Meta)))
- break;
- } catch (...) { (_Istr).setstate(ios_base::badbit, true); }
- }
- _Istr.setstate(_State);
- }
- return (_Istr);
- }
-
@@ -137192,11 +186712,8 @@
-}
-#pragma warning(pop)
-#pragma pack(pop)
@@ -137210,246 +186727,33 @@
-#pragma pack(push,8)
-#pragma warning(push,3)
- #pragma warning(disable: 4189)
-namespace std {
-
-template<class _Elem,
- class _Traits,
- class _Alloc> inline
- basic_string<_Elem, _Traits, _Alloc> __cdecl operator+(
- const basic_string<_Elem, _Traits, _Alloc>& _Left,
- const basic_string<_Elem, _Traits, _Alloc>& _Right)
- {
- return (basic_string<_Elem, _Traits, _Alloc>(_Left) += _Right);
- }
-template<class _Elem,
- class _Traits,
- class _Alloc> inline
- basic_string<_Elem, _Traits, _Alloc> __cdecl operator+(
- const _Elem *_Left,
- const basic_string<_Elem, _Traits, _Alloc>& _Right)
- {
- return (basic_string<_Elem, _Traits, _Alloc>(_Left) += _Right);
- }
-template<class _Elem,
- class _Traits,
- class _Alloc> inline
- basic_string<_Elem, _Traits, _Alloc> __cdecl operator+(
- const _Elem _Left,
- const basic_string<_Elem, _Traits, _Alloc>& _Right)
- {
- return (basic_string<_Elem, _Traits, _Alloc>(1, _Left) += _Right);
- }
-template<class _Elem,
- class _Traits,
- class _Alloc> inline
- basic_string<_Elem, _Traits, _Alloc> __cdecl operator+(
- const basic_string<_Elem, _Traits, _Alloc>& _Left,
- const _Elem *_Right)
- {
- return (basic_string<_Elem, _Traits, _Alloc>(_Left) += _Right);
- }
-template<class _Elem,
- class _Traits,
- class _Alloc> inline
- basic_string<_Elem, _Traits, _Alloc> __cdecl operator+(
- const basic_string<_Elem, _Traits, _Alloc>& _Left,
- const _Elem _Right)
- {
- return (basic_string<_Elem, _Traits, _Alloc>(_Left) += _Right);
- }
-template<class _Elem,
- class _Traits,
- class _Alloc> inline
- bool __cdecl operator==(
- const basic_string<_Elem, _Traits, _Alloc>& _Left,
- const basic_string<_Elem, _Traits, _Alloc>& _Right)
- {
- return (_Left.compare(_Right) == 0);
- }
-template<class _Elem,
- class _Traits,
- class _Alloc> inline
- bool __cdecl operator==(
- const _Elem * _Left,
- const basic_string<_Elem, _Traits, _Alloc>& _Right)
- {
- return (_Right.compare(_Left) == 0);
- }
-template<class _Elem,
- class _Traits,
- class _Alloc> inline
- bool __cdecl operator==(
- const basic_string<_Elem, _Traits, _Alloc>& _Left,
- const _Elem *_Right)
- {
- return (_Left.compare(_Right) == 0);
- }
-template<class _Elem,
- class _Traits,
- class _Alloc> inline
- bool __cdecl operator!=(
- const basic_string<_Elem, _Traits, _Alloc>& _Left,
- const basic_string<_Elem, _Traits, _Alloc>& _Right)
- {
- return (!(_Left == _Right));
- }
-template<class _Elem,
- class _Traits,
- class _Alloc> inline
- bool __cdecl operator!=(
- const _Elem *_Left,
- const basic_string<_Elem, _Traits, _Alloc>& _Right)
- {
- return (!(_Left == _Right));
- }
-template<class _Elem,
- class _Traits,
- class _Alloc> inline
- bool __cdecl operator!=(
- const basic_string<_Elem, _Traits, _Alloc>& _Left,
- const _Elem *_Right)
- {
- return (!(_Left == _Right));
- }
-template<class _Elem,
- class _Traits,
- class _Alloc> inline
- bool __cdecl operator<(
- const basic_string<_Elem, _Traits, _Alloc>& _Left,
- const basic_string<_Elem, _Traits, _Alloc>& _Right)
- {
- return (_Left.compare(_Right) < 0);
- }
-template<class _Elem,
- class _Traits,
- class _Alloc> inline
- bool __cdecl operator<(
- const _Elem * _Left,
- const basic_string<_Elem, _Traits, _Alloc>& _Right)
- {
- return (_Right.compare(_Left) > 0);
- }
-template<class _Elem,
- class _Traits,
- class _Alloc> inline
- bool __cdecl operator<(
- const basic_string<_Elem, _Traits, _Alloc>& _Left,
- const _Elem *_Right)
- {
- return (_Left.compare(_Right) < 0);
- }
-template<class _Elem,
- class _Traits,
- class _Alloc> inline
- bool __cdecl operator>(
- const basic_string<_Elem, _Traits, _Alloc>& _Left,
- const basic_string<_Elem, _Traits, _Alloc>& _Right)
- {
- return (_Right < _Left);
- }
-template<class _Elem,
- class _Traits,
- class _Alloc> inline
- bool __cdecl operator>(
- const _Elem * _Left,
- const basic_string<_Elem, _Traits, _Alloc>& _Right)
- {
- return (_Right < _Left);
- }
-template<class _Elem,
- class _Traits,
- class _Alloc> inline
- bool __cdecl operator>(
- const basic_string<_Elem, _Traits, _Alloc>& _Left,
- const _Elem *_Right)
- {
- return (_Right < _Left);
- }
-template<class _Elem,
- class _Traits,
- class _Alloc> inline
- bool __cdecl operator<=(
- const basic_string<_Elem, _Traits, _Alloc>& _Left,
- const basic_string<_Elem, _Traits, _Alloc>& _Right)
- {
- return (!(_Right < _Left));
- }
-template<class _Elem,
- class _Traits,
- class _Alloc> inline
- bool __cdecl operator<=(
- const _Elem * _Left,
- const basic_string<_Elem, _Traits, _Alloc>& _Right)
- {
- return (!(_Right < _Left));
- }
-template<class _Elem,
- class _Traits,
- class _Alloc> inline
- bool __cdecl operator<=(
- const basic_string<_Elem, _Traits, _Alloc>& _Left,
- const _Elem *_Right)
- {
- return (!(_Right < _Left));
- }
-template<class _Elem,
- class _Traits,
- class _Alloc> inline
- bool __cdecl operator>=(
- const basic_string<_Elem, _Traits, _Alloc>& _Left,
- const basic_string<_Elem, _Traits, _Alloc>& _Right)
- {
- return (!(_Left < _Right));
- }
-template<class _Elem,
- class _Traits,
- class _Alloc> inline
- bool __cdecl operator>=(
- const _Elem * _Left,
- const basic_string<_Elem, _Traits, _Alloc>& _Right)
- {
- return (!(_Left < _Right));
- }
-template<class _Elem,
- class _Traits,
- class _Alloc> inline
- bool __cdecl operator>=(
- const basic_string<_Elem, _Traits, _Alloc>& _Left,
- const _Elem *_Right)
- {
- return (!(_Left < _Right));
- }
-
@@ -137622,177 +186926,23 @@
-
-template<class _Elem,
- class _Traits,
- class _Alloc> inline
- basic_istream<_Elem, _Traits>& __cdecl operator>>(
- basic_istream<_Elem, _Traits>& _Istr,
- basic_string<_Elem, _Traits, _Alloc>& _Str)
- {
- typedef ctype<_Elem> _Ctype;
- typedef basic_istream<_Elem, _Traits> _Myis;
- typedef basic_string<_Elem, _Traits, _Alloc> _Mystr;
- typedef typename _Mystr::size_type _Mysizt;
- ios_base::iostate _State = ios_base::goodbit;
- bool _Changed = false;
- const typename _Myis::sentry _Ok(_Istr);
- if (_Ok)
- {
- const _Ctype& _Ctype_fac = use_facet<_Ctype >(_Istr.getloc());
- _Str.erase();
- try {
- _Mysizt _Size = 0 < _Istr.width()
- && (_Mysizt)_Istr.width() < _Str.max_size()
- ? (_Mysizt)_Istr.width() : _Str.max_size();
- typename _Traits::int_type _Meta = _Istr.rdbuf()->sgetc();
- for (; 0 < _Size; --_Size, _Meta = _Istr.rdbuf()->snextc())
- if(_Traits::eq_int_type(_Traits::eof(), _Meta))
- {
- _State |= ios_base::eofbit;
- break;
- }
- else if (_Ctype_fac.is(_Ctype::space,
- _Traits::to_char_type(_Meta)))
- break;
- else
- {
- _Str.append(1, _Traits::to_char_type(_Meta));
- _Changed = true;
- }
- } catch (...) { (_Istr).setstate(ios_base::badbit, true); }
- }
- _Istr.width(0);
- if (!_Changed)
- _State |= ios_base::failbit;
- _Istr.setstate(_State);
- return (_Istr);
- }
-template<class _Elem,
- class _Traits,
- class _Alloc> inline
- basic_istream<_Elem, _Traits>& __cdecl getline(
- basic_istream<_Elem, _Traits>& _Istr,
- basic_string<_Elem, _Traits, _Alloc>& _Str,
- const _Elem _Delim)
- {
- typedef basic_istream<_Elem, _Traits> _Myis;
- ios_base::iostate _State = ios_base::goodbit;
- bool _Changed = false;
- const typename _Myis::sentry _Ok(_Istr, true);
- if (_Ok)
- {
- try {
- _Str.erase();
- const typename _Traits::int_type _Metadelim =
- _Traits::to_int_type(_Delim);
- typename _Traits::int_type _Meta = _Istr.rdbuf()->sgetc();
- for (; ; _Meta = _Istr.rdbuf()->snextc())
- if (_Traits::eq_int_type(_Traits::eof(), _Meta))
- {
- _State |= ios_base::eofbit;
- break;
- }
- else if (_Traits::eq_int_type(_Meta, _Metadelim))
- {
- _Changed = true;
- _Istr.rdbuf()->sbumpc();
- break;
- }
- else if (_Str.max_size() <= _Str.size())
- {
- _State |= ios_base::failbit;
- break;
- }
- else
- {
- _Str += _Traits::to_char_type(_Meta);
- _Changed = true;
- }
- } catch (...) { (_Istr).setstate(ios_base::badbit, true); }
- }
- if (!_Changed)
- _State |= ios_base::failbit;
- _Istr.setstate(_State);
- return (_Istr);
- }
-template<class _Elem,
- class _Traits,
- class _Alloc> inline
- basic_istream<_Elem, _Traits>& __cdecl getline(
- basic_istream<_Elem, _Traits>& _Istr,
- basic_string<_Elem, _Traits, _Alloc>& _Str)
- {
- return (getline(_Istr, _Str, _Istr.widen('\n')));
- }
-template<class _Elem,
- class _Traits,
- class _Alloc> inline
- basic_ostream<_Elem, _Traits>& __cdecl operator<<(
- basic_ostream<_Elem, _Traits>& _Ostr,
- const basic_string<_Elem, _Traits, _Alloc>& _Str)
- {
- typedef basic_ostream<_Elem, _Traits> _Myos;
- typedef basic_string<_Elem, _Traits, _Alloc> _Mystr;
- typedef typename _Mystr::size_type _Mysizt;
- ios_base::iostate _State = ios_base::goodbit;
- _Mysizt _Size = _Str.size();
- _Mysizt _Pad = _Ostr.width() <= 0 || (_Mysizt)_Ostr.width() <= _Size
- ? 0 : (_Mysizt)_Ostr.width() - _Size;
- const typename _Myos::sentry _Ok(_Ostr);
- if (!_Ok)
- _State |= ios_base::badbit;
- else
- {
- try {
- if ((_Ostr.flags() & ios_base::adjustfield) != ios_base::left)
- for (; 0 < _Pad; --_Pad)
- if (_Traits::eq_int_type(_Traits::eof(),
- _Ostr.rdbuf()->sputc(_Ostr.fill())))
- {
- _State |= ios_base::badbit;
- break;
- }
- if (_State == ios_base::goodbit)
- for (_Mysizt _Count = 0; _Count < _Size; ++_Count)
- if (_Traits::eq_int_type(_Traits::eof(),
- _Ostr.rdbuf()->sputc(_Str[_Count])))
- {
- _State |= ios_base::badbit;
- break;
- }
- if (_State == ios_base::goodbit)
- for (; 0 < _Pad; --_Pad)
- if (_Traits::eq_int_type(_Traits::eof(),
- _Ostr.rdbuf()->sputc(_Ostr.fill())))
- {
- _State |= ios_base::badbit;
- break;
- }
- _Ostr.width(0);
- } catch (...) { (_Ostr).setstate(ios_base::badbit, true); }
- }
- _Ostr.setstate(_State);
- return (_Ostr);
- }
-
@@ -137833,12 +186983,8 @@
-}
- #pragma warning(default: 4189)
-#pragma warning(pop)
-#pragma pack(pop)
@@ -137851,330 +186997,50 @@
-#pragma pack(push,8)
-#pragma warning(push,3)
+namespace boost {
+template< typename T > struct remove_all_extents { typedef T type; };
-namespace std {
- #pragma warning(disable:4251)
+template< typename T, std::size_t N > struct remove_all_extents<T[N]> { typedef typename boost::remove_all_extents<T>::type type; };
+template< typename T, std::size_t N > struct remove_all_extents<T const[N]> { typedef typename boost::remove_all_extents<T const>::type type; };
+template< typename T, std::size_t N > struct remove_all_extents<T volatile[N]> { typedef typename boost::remove_all_extents<T volatile>::type type; };
+template< typename T, std::size_t N > struct remove_all_extents<T const volatile[N]> { typedef typename boost::remove_all_extents<T const volatile>::type type; };
-
-template<class _Elem,
- class _Traits,
- class _Alloc>
- class basic_stringbuf
- : public basic_streambuf<_Elem, _Traits>
- {
-public:
- typedef _Alloc allocator_type;
- typedef basic_streambuf<_Elem, _Traits> _Mysb;
- typedef basic_string<_Elem, _Traits, _Alloc> _Mystr;
+template< typename T > struct remove_all_extents<T[]> { typedef typename boost::remove_all_extents<T>::type type; };
+template< typename T > struct remove_all_extents<T const[]> { typedef typename boost::remove_all_extents<T const>::type type; };
+template< typename T > struct remove_all_extents<T volatile[]> { typedef typename boost::remove_all_extents<T volatile>::type type; };
+template< typename T > struct remove_all_extents<T const volatile[]> { typedef typename boost::remove_all_extents<T const volatile>::type type; };
- explicit basic_stringbuf(ios_base::openmode _Mode =
- ios_base::in | ios_base::out)
- {
- _Init(0, 0, _Getstate(_Mode));
- }
- explicit basic_stringbuf(const _Mystr& _Str,
- ios_base::openmode _Mode = ios_base::in | ios_base::out)
- {
- _Init(_Str.c_str(), _Str.size(), _Getstate(_Mode));
- }
- virtual ~basic_stringbuf()
- {
- _Tidy();
- }
+}
- enum
- {
- _Allocated = 1,
- _Constant = 2,
- _Noread = 4,
- _Append = 8,
- _Atend = 16};
- typedef int _Strstate;
- typedef typename _Traits::int_type int_type;
- typedef typename _Traits::pos_type pos_type;
- typedef typename _Traits::off_type off_type;
- _Mystr str() const
- {
- if (!(_Mystate & _Constant) && _Mysb::pptr() != 0)
- {
- _Mystr _Str(_Mysb::pbase(), (_Seekhigh < _Mysb::pptr()
- ? _Mysb::pptr() : _Seekhigh) - _Mysb::pbase());
- return (_Str);
- }
- else if (!(_Mystate & _Noread) && _Mysb::gptr() != 0)
- {
- _Mystr _Str(_Mysb::eback(), _Mysb::egptr() - _Mysb::eback());
- return (_Str);
- }
- else
- {
- _Mystr _Nul;
- return (_Nul);
- }
- }
- void str(const _Mystr& _Newstr)
- {
- _Tidy();
- _Init(_Newstr.c_str(), _Newstr.size(), _Mystate);
- }
-protected:
- virtual int_type overflow(int_type _Meta = _Traits::eof())
- {
- if (_Mystate & _Append
- && _Mysb::pptr() != 0 && _Mysb::pptr() < _Seekhigh)
- _Mysb::setp(_Mysb::pbase(), _Seekhigh, _Mysb::epptr());
- if (_Traits::eq_int_type(_Traits::eof(), _Meta))
- return (_Traits::not_eof(_Meta));
- else if (_Mysb::pptr() != 0
- && _Mysb::pptr() < _Mysb::epptr())
- {
- *_Mysb::_Pninc() = _Traits::to_char_type(_Meta);
- return (_Meta);
- }
- else if (_Mystate & _Constant)
- return (_Traits::eof());
- else
- {
- size_t _Oldsize = _Mysb::pptr() == 0
- ? 0 : _Mysb::epptr() - _Mysb::eback();
- size_t _Newsize = _Oldsize;
- size_t _Inc = _Newsize / 2 < _MINSIZE
- ? _MINSIZE : _Newsize / 2;
- _Elem *_Ptr = 0;
- while (0 < _Inc && 2147483647 - _Inc < _Newsize)
- _Inc /= 2;
- if (0 < _Inc)
- {
- _Newsize += _Inc;
- _Ptr = _Al.allocate(_Newsize);
- }
- if (0 < _Oldsize)
- _Traits_helper::copy_s<_Traits>(_Ptr, _Newsize, _Mysb::eback(), _Oldsize);
- if (_Mystate & _Allocated)
- _Al.deallocate(_Mysb::eback(), _Oldsize);
- _Mystate |= _Allocated;
- if (_Oldsize == 0)
- {
- _Seekhigh = _Ptr;
- _Mysb::setp(_Ptr, _Ptr + _Newsize);
- if (_Mystate & _Noread)
- _Mysb::setg(_Ptr, 0, _Ptr);
- else
- _Mysb::setg(_Ptr, _Ptr, _Ptr + 1);
- }
- else
- {
- _Seekhigh = _Seekhigh - _Mysb::eback() + _Ptr;
- _Mysb::setp(_Mysb::pbase() - _Mysb::eback() + _Ptr,
- _Mysb::pptr() - _Mysb::eback() + _Ptr, _Ptr + _Newsize);
- if (_Mystate & _Noread)
- _Mysb::setg(_Ptr, 0, _Ptr);
- else
- _Mysb::setg(_Ptr,
- _Mysb::gptr() - _Mysb::eback() + _Ptr,
- _Mysb::pptr() + 1);
- }
- *_Mysb::_Pninc() = _Traits::to_char_type(_Meta);
- return (_Meta);
- }
- }
- virtual int_type pbackfail(int_type _Meta = _Traits::eof())
- {
- if (_Mysb::gptr() == 0
- || _Mysb::gptr() <= _Mysb::eback()
- || !_Traits::eq_int_type(_Traits::eof(), _Meta)
- && !_Traits::eq(_Traits::to_char_type(_Meta), _Mysb::gptr()[-1])
- && _Mystate & _Constant)
- return (_Traits::eof());
- else
- {
- _Mysb::gbump(-1);
- if (!_Traits::eq_int_type(_Traits::eof(), _Meta))
- *_Mysb::gptr() = _Traits::to_char_type(_Meta);
- return (_Traits::not_eof(_Meta));
- }
- }
- virtual int_type underflow()
- {
- if (_Mysb::gptr() == 0)
- return (_Traits::eof());
- else if (_Mysb::gptr() < _Mysb::egptr())
- return (_Traits::to_int_type(*_Mysb::gptr()));
- else if (_Mystate & _Noread || _Mysb::pptr() == 0
- || _Mysb::pptr() <= _Mysb::gptr() && _Seekhigh <= _Mysb::gptr())
- return (_Traits::eof());
- else
- {
- if (_Seekhigh < _Mysb::pptr())
- _Seekhigh = _Mysb::pptr();
- _Mysb::setg(_Mysb::eback(), _Mysb::gptr(), _Seekhigh);
- return (_Traits::to_int_type(*_Mysb::gptr()));
- }
- }
- virtual pos_type seekoff(off_type _Off,
- ios_base::seekdir _Way,
- ios_base::openmode _Which = ios_base::in | ios_base::out)
- {
- if (_Mysb::pptr() != 0 && _Seekhigh < _Mysb::pptr())
- _Seekhigh = _Mysb::pptr();
- if (_Which & ios_base::in && _Mysb::gptr() != 0)
- {
- if (_Way == ios_base::end)
- _Off += (off_type)(_Seekhigh - _Mysb::eback());
- else if (_Way == ios_base::cur
- && (_Which & ios_base::out) == 0)
- _Off += (off_type)(_Mysb::gptr() - _Mysb::eback());
- else if (_Way != ios_base::beg)
- _Off = _BADOFF;
- if (0 <= _Off && _Off <= _Seekhigh - _Mysb::eback())
- {
- _Mysb::gbump((int)(_Mysb::eback() - _Mysb::gptr() + _Off));
- if (_Which & ios_base::out && _Mysb::pptr() != 0)
- _Mysb::setp(_Mysb::pbase(), _Mysb::gptr(),
- _Mysb::epptr());
- }
- else
- _Off = _BADOFF;
- }
- else if (_Which & ios_base::out && _Mysb::pptr() != 0)
- {
- if (_Way == ios_base::end)
- _Off += (off_type)(_Seekhigh - _Mysb::eback());
- else if (_Way == ios_base::cur)
- _Off += (off_type)(_Mysb::pptr() - _Mysb::eback());
- else if (_Way != ios_base::beg)
- _Off = _BADOFF;
- if (0 <= _Off && _Off <= _Seekhigh - _Mysb::eback())
- _Mysb::pbump((int)(_Mysb::eback()
- - _Mysb::pptr() + _Off));
- else
- _Off = _BADOFF;
- }
- else
- _Off = _BADOFF;
- return (pos_type(_Off));
- }
- virtual pos_type seekpos(pos_type _Ptr,
- ios_base::openmode _Mode = ios_base::in | ios_base::out)
- {
- streamoff _Off = (streamoff)_Ptr;
- if (_Mysb::pptr() != 0 && _Seekhigh < _Mysb::pptr())
- _Seekhigh = _Mysb::pptr();
- if (_Off == _BADOFF)
- ;
- else if (_Mode & ios_base::in && _Mysb::gptr() != 0)
- {
- if (0 <= _Off && _Off <= _Seekhigh - _Mysb::eback())
- {
- _Mysb::gbump((int)(_Mysb::eback() - _Mysb::gptr() + _Off));
- if (_Mode & ios_base::out && _Mysb::pptr() != 0)
- _Mysb::setp(_Mysb::pbase(), _Mysb::gptr(),
- _Mysb::epptr());
- }
- else
- _Off = _BADOFF;
- }
- else if (_Mode & ios_base::out && _Mysb::pptr() != 0)
- {
- if (0 <= _Off && _Off <= _Seekhigh - _Mysb::eback())
- _Mysb::pbump((int)(_Mysb::eback()
- - _Mysb::pptr() + _Off));
- else
- _Off = _BADOFF;
- }
- else
- _Off = _BADOFF;
- return (streampos(_Off));
- }
- void _Init(const _Elem *_Ptr,
- size_t _Count, _Strstate _State)
- {
- _Seekhigh = 0;
- _Mystate = _State;
- if (_Count != 0
- && (_Mystate & (_Noread | _Constant)) != (_Noread | _Constant))
- {
- _Elem *_Pnew = _Al.allocate(_Count);
- _Traits_helper::copy_s<_Traits>(_Pnew, _Count, _Ptr, _Count);
- _Seekhigh = _Pnew + _Count;
- if (!(_Mystate & _Noread))
- _Mysb::setg(_Pnew, _Pnew,
- _Pnew + _Count);
- if (!(_Mystate & _Constant))
- {
- _Mysb::setp(_Pnew,
- (_Mystate & _Atend) ? _Pnew + _Count : _Pnew,
- _Pnew + _Count);
- if (_Mysb::gptr() == 0)
- _Mysb::setg(_Pnew, 0, _Pnew);
- }
- _Mystate |= _Allocated;
- }
- }
- void _Tidy()
- {
- if (_Mystate & _Allocated)
- _Al.deallocate(_Mysb::eback(),
- (_Mysb::pptr() != 0 ? _Mysb::epptr()
- : _Mysb::egptr()) - _Mysb::eback());
- _Mysb::setg(0, 0, 0);
- _Mysb::setp(0, 0);
- _Seekhigh = 0;
- _Mystate &= ~_Allocated;
- }
-private:
- enum
- {
- _MINSIZE = 32};
- _Strstate _Getstate(ios_base::openmode _Mode)
- {
- _Strstate _State = (_Strstate)0;
- if (!(_Mode & ios_base::in))
- _State |= _Noread;
- if (!(_Mode & ios_base::out))
- _State |= _Constant;
- if (_Mode & ios_base::app)
- _State |= _Append;
- if (_Mode & ios_base::ate)
- _State |= _Atend;
- return (_State);
- }
- _Elem *_Seekhigh;
- _Strstate _Mystate;
- allocator_type _Al;
- };
-
@@ -138185,55 +187051,14 @@
-
-template<class _Elem,
- class _Traits,
- class _Alloc>
- class basic_istringstream
- : public basic_istream<_Elem, _Traits>
- {
-public:
- typedef _Alloc allocator_type;
- typedef basic_stringbuf<_Elem, _Traits, _Alloc> _Mysb;
- typedef basic_string<_Elem, _Traits, _Alloc> _Mystr;
- explicit basic_istringstream(ios_base::openmode _Mode = ios_base::in)
- : basic_istream<_Elem, _Traits>(&_Stringbuffer),
- _Stringbuffer(_Mode | ios_base::in)
- {
- }
- explicit basic_istringstream(const _Mystr& _Str,
- ios_base::openmode _Mode = ios_base::in)
- : basic_istream<_Elem, _Traits>(&_Stringbuffer),
- _Stringbuffer(_Str, _Mode | ios_base::in)
- {
- }
- virtual ~basic_istringstream()
- {
- }
- _Mysb * rdbuf() const
- {
- return ((_Mysb *)&_Stringbuffer);
- }
- _Mystr str() const
- {
- return (_Stringbuffer.str());
- }
- void str(const _Mystr& _Newstr)
- {
- _Stringbuffer.str(_Newstr);
- }
-private:
- _Mysb _Stringbuffer;
- };
-
@@ -138244,55 +187069,14 @@
-
-template<class _Elem,
- class _Traits,
- class _Alloc>
- class basic_ostringstream
- : public basic_ostream<_Elem, _Traits>
- {
-public:
- typedef _Alloc allocator_type;
- typedef basic_stringbuf<_Elem, _Traits, _Alloc> _Mysb;
- typedef basic_string<_Elem, _Traits, _Alloc> _Mystr;
- explicit basic_ostringstream(ios_base::openmode _Mode = ios_base::out)
- : basic_ostream<_Elem, _Traits>(&_Stringbuffer),
- _Stringbuffer(_Mode | ios_base::out)
- {
- }
- explicit basic_ostringstream(const _Mystr& _Str,
- ios_base::openmode _Mode = ios_base::out)
- : basic_ostream<_Elem, _Traits>(&_Stringbuffer),
- _Stringbuffer(_Str, _Mode | ios_base::out)
- {
- }
- virtual ~basic_ostringstream()
- {
- }
- _Mysb * rdbuf() const
- {
- return ((_Mysb *)&_Stringbuffer);
- }
- _Mystr str() const
- {
- return (_Stringbuffer.str());
- }
- void str(const _Mystr& _Newstr)
- {
- _Stringbuffer.str(_Newstr);
- }
-private:
- _Mysb _Stringbuffer;
- };
-
@@ -138303,61 +187087,14 @@
-
-template<class _Elem,
- class _Traits,
- class _Alloc>
- class basic_stringstream
- : public basic_iostream<_Elem, _Traits>
- {
-public:
- typedef _Elem char_type;
- typedef _Traits traits_type;
- typedef _Alloc allocator_type;
- typedef typename _Traits::int_type int_type;
- typedef typename _Traits::pos_type pos_type;
- typedef typename _Traits::off_type off_type;
- typedef basic_string<_Elem, _Traits, _Alloc> _Mystr;
- explicit basic_stringstream(ios_base::openmode _Mode =
- ios_base::in | ios_base::out)
- : basic_iostream<_Elem, _Traits>(&_Stringbuffer),
- _Stringbuffer(_Mode)
- {
- }
- explicit basic_stringstream(const _Mystr& _Str,
- ios_base::openmode _Mode = ios_base::in | ios_base::out)
- : basic_iostream<_Elem, _Traits>(&_Stringbuffer),
- _Stringbuffer(_Str, _Mode)
- {
- }
- virtual ~basic_stringstream()
- {
- }
- basic_stringbuf<_Elem, _Traits, _Alloc> * rdbuf() const
- {
- return ((basic_stringbuf<_Elem, _Traits, _Alloc> *)&_Stringbuffer);
- }
- _Mystr str() const
- {
- return (_Stringbuffer.str());
- }
- void str(const _Mystr& _Newstr)
- {
- _Stringbuffer.str(_Newstr);
- }
-private:
- basic_stringbuf<_Elem, _Traits, _Alloc>
- _Stringbuffer;
- };
-
@@ -138367,11 +187104,8 @@
-}
-#pragma warning(pop)
-#pragma pack(pop)
@@ -138384,1529 +187118,241 @@
-#pragma pack(push,8)
-#pragma warning(push,3)
- #pragma warning(disable: 4244)
-typedef struct _C_double_complex
- {
- double _Val[2];
- } _C_double_complex;
-typedef struct _C_float_complex
- {
- float _Val[2];
- } _C_float_complex;
-typedef struct _C_ldouble_complex
- {
- long double _Val[2];
- } _C_ldouble_complex;
-
-
-
-namespace std {
-typedef ::_C_double_complex _Dcomplex_value;
-typedef ::_C_float_complex _Fcomplex_value;
-typedef ::_C_ldouble_complex _Lcomplex_value;
-
-template<class _Ty>
- class _Ctraits
- {
-public:
- static _Ty __cdecl _Cosh(_Ty _Left, _Ty _Right)
- {
- return (::_Cosh((double)_Left, (double)_Right));
- }
- static short __cdecl _Exp(_Ty *_Pleft, _Ty _Right, short _Exponent)
- {
- double _Tmp = (double)*_Pleft;
- short _Ans = ::_Exp(&_Tmp, (double)_Right, _Exponent);
- *_Pleft = (_Ty)_Tmp;
- return (_Ans);
- }
- static _Ty __cdecl _Infv(_Ty)
- {
- return (::_Inf._Double);
- }
- static bool __cdecl _Isinf(_Ty _Left)
- {
- double _Tmp = (double)_Left;
- return (::_Dtest(&_Tmp) == 1);
- }
- static bool __cdecl _Isnan(_Ty _Left)
- {
- double _Tmp = (double)_Left;
- return (::_Dtest(&_Tmp) == 2);
- }
- static _Ty __cdecl _Nanv(_Ty)
- {
- return (::_Nan._Double);
- }
- static _Ty __cdecl _Sinh(_Ty _Left, _Ty _Right)
- {
- return (::_Sinh((double)_Left, (double)_Right));
- }
- static _Ty __cdecl atan2(_Ty _Yval, _Ty _Xval)
- {
- return (::atan2((double)_Yval, (double)_Xval));
- }
- static _Ty __cdecl cos(_Ty _Left)
- {
- return (::cos((double)_Left));
- }
- static _Ty __cdecl exp(_Ty _Left)
- {
- return (::exp((double)_Left));
- }
- static _Ty __cdecl ldexp(_Ty _Left, int _Exponent)
- {
- return (::ldexp((double)_Left, _Exponent));
- }
- static _Ty __cdecl log(_Ty _Left)
- {
- return (::log((double)_Left));
- }
- static _Ty __cdecl pow(_Ty _Left, _Ty _Right)
- {
- return (::pow((double)_Left, (double)_Right));
- }
- static _Ty __cdecl sin(_Ty _Left)
- {
- return (::sin((double)_Left));
- }
- static _Ty __cdecl sqrt(_Ty _Left)
- {
- return (::sqrt((double)_Left));
- }
- static _Ty __cdecl tan(_Ty _Left)
- {
- return (::tan((double)_Left));
- }
- };
-
-template<> class _Ctraits<long double>
- {
-public:
- typedef long double _Ty;
- static _Ty __cdecl _Cosh(_Ty _Left, _Ty _Right)
- {
- return (::_LCosh(_Left, _Right));
- }
- static short __cdecl _Exp(_Ty *_Pleft, _Ty _Right, short _Exponent)
- {
- return (::_LExp(_Pleft, _Right, _Exponent));
- }
- static _Ty __cdecl _Infv(_Ty)
- {
- return (::_LInf._Long_double);
- }
- static bool __cdecl _Isinf(_Ty _Left)
- {
- return (::_LDtest(&_Left) == 1);
- }
- static bool __cdecl _Isnan(_Ty _Left)
- {
- return (::_LDtest(&_Left) == 2);
- }
- static _Ty __cdecl _Nanv(_Ty)
- {
- return (::_LNan._Long_double);
- }
- static _Ty __cdecl _Sinh(_Ty _Left, _Ty _Right)
- {
- return (::_LSinh(_Left, _Right));
- }
- static _Ty __cdecl atan2(_Ty _Yval, _Ty _Xval)
- {
- return (::atan2l(_Yval, _Xval));
- }
- static _Ty __cdecl cos(_Ty _Left)
- {
- return (::cosl(_Left));
- }
- static _Ty __cdecl exp(_Ty _Left)
- {
- return (::expl(_Left));
- }
- static _Ty __cdecl ldexp(_Ty _Left, int _Exponent)
- {
- return (::ldexpl(_Left, _Exponent));
- }
- static _Ty __cdecl log(_Ty _Left)
- {
- return (::logl(_Left));
- }
- static _Ty __cdecl pow(_Ty _Left, _Ty _Right)
- {
- return (::powl(_Left, _Right));
- }
- static _Ty __cdecl sin(_Ty _Left)
- {
- return (::sinl(_Left));
- }
- static _Ty __cdecl sqrt(_Ty _Left)
- {
- return (::sqrtl(_Left));
- }
- static _Ty __cdecl tan(_Ty _Left)
- {
- return (::tanl(_Left));
- }
- };
-
-template<> class _Ctraits<double>
- {
-public:
- typedef double _Ty;
- static _Ty __cdecl _Cosh(_Ty _Left, _Ty _Right)
- {
- return (::_Cosh(_Left, _Right));
- }
- static short __cdecl _Exp(_Ty *_Pleft, _Ty _Right, short _Exponent)
- {
- return (::_Exp(_Pleft, _Right, _Exponent));
- }
- static _Ty __cdecl _Infv(_Ty)
- {
- return (::_Inf._Double);
- }
- static bool __cdecl _Isinf(_Ty _Left)
- {
- return (::_Dtest(&_Left) == 1);
- }
- static bool __cdecl _Isnan(_Ty _Left)
- {
- return (::_Dtest(&_Left) == 2);
- }
- static _Ty __cdecl _Nanv(_Ty)
- {
- return (::_Nan._Double);
- }
- static _Ty __cdecl _Sinh(_Ty _Left, _Ty _Right)
- {
- return (::_Sinh(_Left, _Right));
- }
- static _Ty __cdecl atan2(_Ty _Yval, _Ty _Xval)
- {
- return (::atan2(_Yval, _Xval));
- }
- static _Ty __cdecl cos(_Ty _Left)
- {
- return (::cos(_Left));
- }
- static _Ty __cdecl exp(_Ty _Left)
- {
- return (::exp(_Left));
- }
- static _Ty __cdecl ldexp(_Ty _Left, int _Exponent)
- {
- return (::ldexp(_Left, _Exponent));
- }
- static _Ty __cdecl log(_Ty _Left)
- {
- return (::log(_Left));
- }
- static _Ty __cdecl pow(_Ty _Left, _Ty _Right)
- {
- return (::pow(_Left, _Right));
- }
- static _Ty __cdecl sin(_Ty _Left)
- {
- return (::sin(_Left));
- }
- static _Ty __cdecl sqrt(_Ty _Left)
- {
- return (::sqrt(_Left));
- }
- static _Ty __cdecl tan(_Ty _Left)
- {
- return (::tan(_Left));
- }
- };
-
-template<> class _Ctraits<float>
- {
-public:
- typedef float _Ty;
- static _Ty __cdecl _Cosh(_Ty _Left, _Ty _Right)
- {
- return (::_FCosh(_Left, _Right));
- }
- static short __cdecl _Exp(_Ty *_Pleft, _Ty _Right, short _Exponent)
- {
- return (::_FExp(_Pleft, _Right, _Exponent));
- }
- static _Ty __cdecl _Infv(_Ty)
- {
- return (::_FInf._Float);
- }
- static bool __cdecl _Isinf(_Ty _Left)
- {
- return (::_FDtest(&_Left) == 1);
- }
- static bool __cdecl _Isnan(_Ty _Left)
- {
- return (::_FDtest(&_Left) == 2);
- }
- static _Ty __cdecl _Nanv(_Ty)
- {
- return (::_FNan._Float);
- }
- static _Ty __cdecl _Sinh(_Ty _Left, _Ty _Right)
- {
- return (::_FSinh(_Left, _Right));
- }
- static _Ty __cdecl atan2(_Ty _Yval, _Ty _Xval)
- {
- return (::atan2f(_Yval, _Xval));
- }
- static _Ty __cdecl cos(_Ty _Left)
- {
- return (::cosf(_Left));
- }
- static _Ty __cdecl exp(_Ty _Left)
- {
- return (::expf(_Left));
- }
- static _Ty __cdecl ldexp(_Ty _Left, int _Exponent)
- {
- return (::ldexpf(_Left, _Exponent));
- }
- static _Ty __cdecl log(_Ty _Left)
- {
- return (::logf(_Left));
- }
- static _Ty __cdecl pow(_Ty _Left, _Ty _Right)
- {
- return (::powf(_Left, _Right));
- }
- static _Ty __cdecl sin(_Ty _Left)
- {
- return (::sinf(_Left));
- }
- static _Ty __cdecl sqrt(_Ty _Left)
- {
- return (::sqrtf(_Left));
- }
- static _Ty __cdecl tan(_Ty _Left)
- {
- return (::tanf(_Left));
- }
- };
-template<class _Ty>
- class complex;
-template<> class complex<float>;
-template<> class complex<double>;
-template<> class complex<long double>;
-
-template<class _Ty>
- struct _Complex_value
- {
- enum {_Re = 0, _Im = 1};
- _Ty _Val[2];
- };
-
-template<class _Ty,
- class _Valbase>
- class _Complex_base
- : public _Valbase
- {
-public:
- typedef _Ctraits<_Ty> _Myctraits;
- typedef _Complex_base<_Ty, _Valbase> _Myt;
- typedef _Ty value_type;
- _Complex_base(const _Ty& _Realval, const _Ty& _Imagval)
- {
- this->_Val[0] = _Realval;
- this->_Val[1] = _Imagval;
- }
- _Ty real(const _Ty& _Right)
- {
- return (this->_Val[0] = _Right);
- }
- _Ty imag(const _Ty& _Right)
- {
- return (this->_Val[1] = _Right);
- }
- _Ty real() const
- {
- return (this->_Val[0]);
- }
- _Ty imag() const
- {
- return (this->_Val[1]);
- }
-protected:
- template<class _Other> inline
- void _Add(const complex<_Other>& _Right)
- {
- this->_Val[0] = this->_Val[0] + (_Ty)_Right.real();
- this->_Val[1] = this->_Val[1] + (_Ty)_Right.imag();
- }
- template<class _Other> inline
- void _Sub(const complex<_Other>& _Right)
- {
- this->_Val[0] = this->_Val[0] - (_Ty)_Right.real();
- this->_Val[1] = this->_Val[1] - (_Ty)_Right.imag();
- }
- template<class _Other> inline
- void _Mul(const complex<_Other>& _Right)
- {
- _Ty _Rightreal = (_Ty)_Right.real();
- _Ty _Rightimag = (_Ty)_Right.imag();
- _Ty _Tmp = this->_Val[0] * _Rightreal
- - this->_Val[1] * _Rightimag;
- this->_Val[1] = this->_Val[0] * _Rightimag
- + this->_Val[1] * _Rightreal;
- this->_Val[0] = _Tmp;
- }
- template<class _Other> inline
- void _Div(const complex<_Other>& _Right)
- {
- typedef _Ctraits<_Ty> _Myctraits;
- _Ty _Rightreal = (_Ty)_Right.real();
- _Ty _Rightimag = (_Ty)_Right.imag();
- if (_Myctraits::_Isnan(_Rightreal) || _Myctraits::_Isnan(_Rightimag))
- {
- this->_Val[0] = _Myctraits::_Nanv(_Rightreal);
- this->_Val[1] = this->_Val[0];
- }
- else if ((_Rightimag < 0 ? -_Rightimag : +_Rightimag)
- < (_Rightreal < 0 ? -_Rightreal : +_Rightreal))
- {
- _Ty _Wr = _Rightimag / _Rightreal;
- _Ty _Wd = _Rightreal + _Wr * _Rightimag;
- if (_Myctraits::_Isnan(_Wd) || _Wd == 0)
- {
- this->_Val[0] = _Myctraits::_Nanv(_Rightreal);
- this->_Val[1] = this->_Val[0];
- }
- else
- {
- _Ty _Tmp = (this->_Val[0]
- + this->_Val[1] * _Wr) / _Wd;
- this->_Val[1] = (this->_Val[1]
- - this->_Val[0] * _Wr) / _Wd;
- this->_Val[0] = _Tmp;
- }
- }
- else if (_Rightimag == 0)
- {
- this->_Val[0] = _Myctraits::_Nanv(_Rightreal);
- this->_Val[1] = this->_Val[0];
- }
- else
- {
- _Ty _Wr = _Rightreal / _Rightimag;
- _Ty _Wd = _Rightimag + _Wr * _Rightreal;
- if (_Myctraits::_Isnan(_Wd) || _Wd == 0)
- {
- this->_Val[0] = _Myctraits::_Nanv(_Rightreal);
- this->_Val[1] = this->_Val[0];
- }
- else
- {
- _Ty _Tmp = (this->_Val[0] * _Wr + this->_Val[1]) / _Wd;
- this->_Val[1] = (this->_Val[1] * _Wr
- - this->_Val[0]) / _Wd;
- this->_Val[0] = _Tmp;
- }
- }
- }
- };
-
-template<> class complex<float>
- : public _Complex_base<float, _Fcomplex_value>
- {
-public:
- typedef float _Ty;
- typedef complex<_Ty> _Myt;
- explicit complex(const complex<double>&);
- explicit complex(const complex<long double>&);
- complex(const _Ty& _Realval = 0, const _Ty& _Imagval = 0)
- : _Complex_base<float, _Fcomplex_value>(_Realval, _Imagval)
- {
- }
- complex(const _Fcomplex_value& _Right)
- : _Complex_base<float, _Fcomplex_value>(_Right._Val[0],
- _Right._Val[1])
- {
- }
- complex<_Ty>& operator=(const _Ty& _Right)
- {
- this->_Val[0] = _Right;
- this->_Val[1] = 0;
- return (*this);
- }
- _Myt& operator+=(const _Ty& _Right)
- {
- this->_Val[0] = _Val[0] + _Right;
- return (*this);
- }
- _Myt& operator-=(const _Ty& _Right)
- {
- this->_Val[0] = _Val[0] - _Right;
- return (*this);
- }
- _Myt& operator*=(const _Ty& _Right)
- {
- this->_Val[0] = _Val[0] * _Right;
- this->_Val[1] = _Val[1] * _Right;
- return (*this);
- }
- _Myt& operator/=(const _Ty& _Right)
- {
- this->_Val[0] = _Val[0] / _Right;
- this->_Val[1] = _Val[1] / _Right;
- return (*this);
- }
- _Myt& operator=(const _Myt& _Right)
- {
- this->_Val[0] = _Right.real();
- this->_Val[1] = _Right.imag();
- return (*this);
- }
- _Myt& operator+=(const _Myt& _Right)
- {
- this->_Add(_Right);
- return (*this);
- }
- _Myt& operator-=(const _Myt& _Right)
- {
- this->_Sub(_Right);
- return (*this);
- }
- _Myt& operator*=(const _Myt& _Right)
- {
- this->_Mul(_Right);
- return (*this);
- }
- _Myt& operator/=(const _Myt& _Right)
- {
- this->_Div(_Right);
- return (*this);
- }
- template<class _Other> inline
- _Myt& operator=(const complex<_Other>& _Right)
- {
- _Val[0] = (_Ty)_Right._Val[0];
- _Val[1] = (_Ty)_Right._Val[1];
- return (*this);
- }
- template<class _Other> inline
- _Myt& operator+=(const complex<_Other>& _Right)
- {
- this->_Add(_Right);
- return (*this);
- }
- template<class _Other> inline
- _Myt& operator-=(const complex<_Other>& _Right)
- {
- this->_Sub(_Right);
- return (*this);
- }
- template<class _Other> inline
- _Myt& operator*=(const complex<_Other>& _Right)
- {
- this->_Mul(_Right);
- return (*this);
- }
- template<class _Other> inline
- _Myt& operator/=(const complex<_Other>& _Right)
- {
- this->_Div(_Right);
- return (*this);
- }
- };
-
-template<> class complex<double>
- : public _Complex_base<double, _Dcomplex_value>
- {
-public:
- typedef double _Ty;
- typedef complex<_Ty> _Myt;
- complex(const complex<float>&);
- explicit complex(const complex<long double>&);
- complex(const _Ty& _Realval = 0, const _Ty& _Imagval = 0)
- : _Complex_base<double, _Dcomplex_value>(_Realval, _Imagval)
- {
- }
- complex(const _Dcomplex_value& _Right)
- : _Complex_base<double, _Dcomplex_value>(_Right._Val[0],
- _Right._Val[1])
- {
- }
- complex<_Ty>& operator=(const _Ty& _Right)
- {
- this->_Val[0] = _Right;
- this->_Val[1] = 0;
- return (*this);
- }
- _Myt& operator+=(const _Ty& _Right)
- {
- this->_Val[0] = _Val[0] + _Right;
- return (*this);
- }
- _Myt& operator-=(const _Ty& _Right)
- {
- this->_Val[0] = _Val[0] - _Right;
- return (*this);
- }
- _Myt& operator*=(const _Ty& _Right)
- {
- this->_Val[0] = _Val[0] * _Right;
- this->_Val[1] = _Val[1] * _Right;
- return (*this);
- }
- _Myt& operator/=(const _Ty& _Right)
- {
- this->_Val[0] = _Val[0] / _Right;
- this->_Val[1] = _Val[1] / _Right;
- return (*this);
- }
- _Myt& operator=(const _Myt& _Right)
- {
- this->_Val[0] = _Right.real();
- this->_Val[1] = _Right.imag();
- return (*this);
- }
- _Myt& operator+=(const _Myt& _Right)
- {
- this->_Add(_Right);
- return (*this);
- }
- _Myt& operator-=(const _Myt& _Right)
- {
- this->_Sub(_Right);
- return (*this);
- }
- _Myt& operator*=(const _Myt& _Right)
- {
- this->_Mul(_Right);
- return (*this);
- }
- _Myt& operator/=(const _Myt& _Right)
- {
- this->_Div(_Right);
- return (*this);
- }
- template<class _Other> inline
- _Myt& operator=(const complex<_Other>& _Right)
- {
- _Val[0] = (_Ty)_Right._Val[0];
- _Val[1] = (_Ty)_Right._Val[1];
- return (*this);
- }
- template<class _Other> inline
- _Myt& operator+=(const complex<_Other>& _Right)
- {
- this->_Add(_Right);
- return (*this);
- }
- template<class _Other> inline
- _Myt& operator-=(const complex<_Other>& _Right)
- {
- this->_Sub(_Right);
- return (*this);
- }
- template<class _Other> inline
- _Myt& operator*=(const complex<_Other>& _Right)
- {
- this->_Mul(_Right);
- return (*this);
- }
- template<class _Other> inline
- _Myt& operator/=(const complex<_Other>& _Right)
- {
- this->_Div(_Right);
- return (*this);
- }
- };
-
-template<> class complex<long double>
- : public _Complex_base<long double, _Lcomplex_value>
- {
-public:
- typedef long double _Ty;
- typedef complex<_Ty> _Myt;
- complex(const complex<float>&);
- complex(const complex<double>&);
- complex(const _Ty& _Realval = 0, const _Ty& _Imagval = 0)
- : _Complex_base<long double, _Lcomplex_value>(_Realval, _Imagval)
- {
- }
- complex(const _Lcomplex_value& _Right)
- : _Complex_base<long double, _Lcomplex_value>(_Right._Val[0],
- _Right._Val[1])
- {
- }
- complex<_Ty>& operator=(const _Ty& _Right)
- {
- this->_Val[0] = _Right;
- this->_Val[1] = 0;
- return (*this);
- }
- _Myt& operator+=(const _Ty& _Right)
- {
- this->_Val[0] = _Val[0] + _Right;
- return (*this);
- }
- _Myt& operator-=(const _Ty& _Right)
- {
- this->_Val[0] = _Val[0] - _Right;
- return (*this);
- }
- _Myt& operator*=(const _Ty& _Right)
- {
- this->_Val[0] = _Val[0] * _Right;
- this->_Val[1] = _Val[1] * _Right;
- return (*this);
- }
- _Myt& operator/=(const _Ty& _Right)
- {
- this->_Val[0] = _Val[0] / _Right;
- this->_Val[1] = _Val[1] / _Right;
- return (*this);
- }
- _Myt& operator=(const _Myt& _Right)
- {
- this->_Val[0] = _Right.real();
- this->_Val[1] = _Right.imag();
- return (*this);
- }
- _Myt& operator+=(const _Myt& _Right)
- {
- this->_Add(_Right);
- return (*this);
- }
- _Myt& operator-=(const _Myt& _Right)
- {
- this->_Sub(_Right);
- return (*this);
- }
- _Myt& operator*=(const _Myt& _Right)
- {
- this->_Mul(_Right);
- return (*this);
- }
- _Myt& operator/=(const _Myt& _Right)
- {
- this->_Div(_Right);
- return (*this);
- }
- template<class _Other> inline
- _Myt& operator=(const complex<_Other>& _Right)
- {
- _Val[0] = (_Ty)_Right._Val[0];
- _Val[1] = (_Ty)_Right._Val[1];
- return (*this);
- }
- template<class _Other> inline
- _Myt& operator+=(const complex<_Other>& _Right)
- {
- this->_Add(_Right);
- return (*this);
- }
- template<class _Other> inline
- _Myt& operator-=(const complex<_Other>& _Right)
- {
- this->_Sub(_Right);
- return (*this);
- }
- template<class _Other> inline
- _Myt& operator*=(const complex<_Other>& _Right)
- {
- this->_Mul(_Right);
- return (*this);
- }
- template<class _Other> inline
- _Myt& operator/=(const complex<_Other>& _Right)
- {
- this->_Div(_Right);
- return (*this);
- }
- };
-
-inline
- complex<float>::complex(const complex<double>& _Right)
- : _Complex_base<float, _Fcomplex_value>(
- (_Ty)_Right.real(), (_Ty)_Right.imag())
- {
- }
-inline
- complex<float>::complex(const complex<long double>& _Right)
- : _Complex_base<float, _Fcomplex_value>(
- (_Ty)_Right.real(), (_Ty)_Right.imag())
- {
- }
-inline
- complex<double>::complex(const complex<float>& _Right)
- : _Complex_base<double, _Dcomplex_value>(
- (_Ty)_Right.real(), (_Ty)_Right.imag())
- {
- }
-inline
- complex<double>::complex(const complex<long double>& _Right)
- : _Complex_base<double, _Dcomplex_value>(
- (_Ty)_Right.real(), (_Ty)_Right.imag())
- {
- }
-inline
- complex<long double>::complex(const complex<float>& _Right)
- : _Complex_base<long double, _Lcomplex_value>(
- (_Ty)_Right.real(), (_Ty)_Right.imag())
- {
- }
-inline
- complex<long double>::complex(const complex<double>& _Right)
- : _Complex_base<long double, _Lcomplex_value>(
- (_Ty)_Right.real(), (_Ty)_Right.imag())
- {
- }
-
-template<class _Ty>
- class complex
- : public _Complex_base<_Ty, _Complex_value<_Ty> >
- {
-public:
- typedef complex<_Ty> _Myt;
- typedef _Complex_base<_Ty, _Complex_value<_Ty> > _Mybase;
- complex(const _Ty& _Realval = 0, const _Ty& _Imagval = 0)
- : _Mybase(_Realval, _Imagval)
- {
- }
- _Myt& operator=(const _Ty& _Right)
- {
- this->_Val[0] = _Right;
- this->_Val[1] = 0;
- return (*this);
- }
- template<class _Other>
- complex(const complex<_Other>& _Right)
- : _Mybase((_Ty)_Right.real(), (_Ty)_Right.imag())
- {
- }
- template<class _Other>
- _Myt& operator=(const complex<_Other>& _Right)
- {
- this->_Val[0] = (_Ty)_Right.real();
- this->_Val[1] = (_Ty)_Right.imag();
- return (*this);
- }
- _Myt& operator+=(const _Ty& _Right)
- {
- this->_Val[0] = this->_Val[0] + _Right;
- return (*this);
- }
- _Myt& operator-=(const _Ty& _Right)
- {
- this->_Val[0] = this->_Val[0] - _Right;
- return (*this);
- }
- _Myt& operator*=(const _Ty& _Right)
- {
- this->_Val[0] = this->_Val[0] * _Right;
- this->_Val[1] = this->_Val[1] * _Right;
- return (*this);
- }
- _Myt& operator/=(const _Ty& _Right)
- {
- this->_Val[0] = this->_Val[0] / _Right;
- this->_Val[1] = this->_Val[1] / _Right;
- return (*this);
- }
- _Myt& operator+=(const _Myt& _Right)
- {
- this->_Add(_Right);
- return (*this);
- }
- _Myt& operator-=(const _Myt& _Right)
- {
- this->_Sub(_Right);
- return (*this);
- }
- _Myt& operator*=(const _Myt& _Right)
- {
- this->_Mul(_Right);
- return (*this);
- }
- _Myt& operator/=(const _Myt& _Right)
- {
- this->_Div(_Right);
- return (*this);
- }
- template<class _Other> inline
- _Myt& operator+=(const complex<_Other>& _Right)
- {
- this->_Add(_Right);
- return (*this);
- }
- template<class _Other> inline
- _Myt& operator-=(const complex<_Other>& _Right)
- {
- this->_Sub(_Right);
- return (*this);
- }
- template<class _Other> inline
- _Myt& operator*=(const complex<_Other>& _Right)
- {
- this->_Mul(_Right);
- return (*this);
- }
- template<class _Other> inline
- _Myt& operator/=(const complex<_Other>& _Right)
- {
- this->_Div(_Right);
- return (*this);
- }
- };
-
-
-
-
-#pragma once
-
-template<class _Ty > inline
- _Ty __cdecl imag(const complex<_Ty >& _Left)
- {
- return (_Left.imag());
- }
-
-template<class _Ty > inline
- _Ty __cdecl real(const complex<_Ty >& _Left)
- {
- return (_Left.real());
- }
-
-template<class _Ty > inline
- _Ty __cdecl _Fabs(const complex<_Ty >& _Left, int *_Pexp)
- {
- *_Pexp = 0;
- _Ty _Av = real(_Left);
- _Ty _Bv = imag(_Left);
- if (_Ctraits<_Ty >::_Isinf(_Av) || _Ctraits<_Ty >::_Isinf(_Bv))
- return (_Ctraits<_Ty >::_Infv(_Bv));
- else if (_Ctraits<_Ty >::_Isnan(_Av))
- return (_Av);
- else if (_Ctraits<_Ty >::_Isnan(_Bv))
- return (_Bv);
- else
- {
- if (_Av < 0)
- _Av = -_Av;
- if (_Bv < 0)
- _Bv = -_Bv;
- if (_Av < _Bv)
- {
- _Ty _Tmp = _Av;
- _Av = _Bv;
- _Bv = _Tmp;
- }
- if (_Av == 0)
- return (_Av);
- if (1 <= _Av)
- *_Pexp = 2, _Av = _Av * (_Ty)0.25, _Bv = _Bv * (_Ty)0.25;
- else
- *_Pexp = -2, _Av = _Av * 4, _Bv = _Bv * 4;
- _Ty _Tmp = _Av - _Bv;
- if (_Tmp == _Av)
- return (_Av);
- else if (_Bv < _Tmp)
- {
- const _Ty _Qv = _Av / _Bv;
- return (_Av + _Bv / (_Qv + _Ctraits<_Ty >::sqrt(_Qv * _Qv + 1)));
- }
- else
- {
- static const _Ty _Root2 =
- (_Ty)1.4142135623730950488016887242096981L;
- static const _Ty _Oneplusroot2high =
- (_Ty)(10125945.0 / 4194304.0);
- static const _Ty _Oneplusroot2low =
- (_Ty)1.4341252375973918872420969807856967e-7L;
- const _Ty _Qv = _Tmp / _Bv;
- const _Ty _Rv = (_Qv + 2) * _Qv;
- const _Ty _Sv = _Rv / (_Root2 + _Ctraits<_Ty >::sqrt(_Rv + 2))
- + _Oneplusroot2low + _Qv + _Oneplusroot2high;
- return (_Av + _Bv / _Sv);
- }
- }
- }
-
-template<class _Ty > inline
- complex<_Ty > __cdecl operator+(const complex<_Ty >& _Left,
- const complex<_Ty >& _Right)
- {
- complex<_Ty > _Tmp(_Left);
- return (_Tmp += _Right);
- }
-template<class _Ty > inline
- complex<_Ty > __cdecl operator+(const complex<_Ty >& _Left,
- const _Ty& _Right)
- {
- complex<_Ty > _Tmp(_Left);
- _Tmp.real(_Tmp.real() + _Right);
- return (_Tmp);
- }
-template<class _Ty > inline
- complex<_Ty > __cdecl operator+(const _Ty& _Left,
- const complex<_Ty >& _Right)
- {
- complex<_Ty > _Tmp(_Left);
- return (_Tmp += _Right);
- }
-
-template<class _Ty > inline
- complex<_Ty > __cdecl operator-(const complex<_Ty >& _Left,
- const complex<_Ty >& _Right)
- {
- complex<_Ty > _Tmp(_Left);
- return (_Tmp -= _Right);
- }
-template<class _Ty > inline
- complex<_Ty > __cdecl operator-(const complex<_Ty >& _Left,
- const _Ty& _Right)
- {
- complex<_Ty > _Tmp(_Left);
- _Tmp.real(_Tmp.real() - _Right);
- return (_Tmp);
- }
-template<class _Ty > inline
- complex<_Ty > __cdecl operator-(const _Ty& _Left,
- const complex<_Ty >& _Right)
- {
- complex<_Ty > _Tmp(_Left);
- return (_Tmp -= _Right);
- }
-
-template<class _Ty > inline
- complex<_Ty > __cdecl operator*(const complex<_Ty >& _Left,
- const complex<_Ty >& _Right)
- {
- complex<_Ty > _Tmp(_Left);
- return (_Tmp *= _Right);
- }
-template<class _Ty > inline
- complex<_Ty > __cdecl operator*(const complex<_Ty >& _Left,
- const _Ty& _Right)
- {
- complex<_Ty > _Tmp(_Left);
- _Tmp.real(_Tmp.real() * _Right);
- _Tmp.imag(_Tmp.imag() * _Right);
- return (_Tmp);
- }
-template<class _Ty > inline
- complex<_Ty > __cdecl operator*(const _Ty& _Left,
- const complex<_Ty >& _Right)
- {
- complex<_Ty > _Tmp(_Left);
- return (_Tmp *= _Right);
- }
-
-template<class _Ty > inline
- complex<_Ty > __cdecl operator/(const complex<_Ty >& _Left,
- const complex<_Ty >& _Right)
- {
- complex<_Ty > _Tmp(_Left);
- return (_Tmp /= _Right);
- }
-template<class _Ty > inline
- complex<_Ty > __cdecl operator/(const complex<_Ty >& _Left,
- const _Ty& _Right)
- {
- complex<_Ty > _Tmp(_Left);
- _Tmp.real(_Tmp.real() / _Right);
- _Tmp.imag(_Tmp.imag() / _Right);
- return (_Tmp);
- }
-template<class _Ty > inline
- complex<_Ty > __cdecl operator/(const _Ty& _Left,
- const complex<_Ty >& _Right)
- {
- complex<_Ty > _Tmp(_Left);
- return (_Tmp /= _Right);
- }
-
-template<class _Ty > inline
- complex<_Ty > __cdecl operator+(const complex<_Ty >& _Left)
- {
- return (complex<_Ty >(_Left));
- }
-
-template<class _Ty > inline
- complex<_Ty > __cdecl operator-(const complex<_Ty >& _Left)
- {
- return (complex<_Ty >(-real(_Left), -imag(_Left)));
- }
-
-template<class _Ty > inline
- bool __cdecl operator==(const complex<_Ty >& _Left,
- const complex<_Ty >& _Right)
- {
- return (real(_Left) == real(_Right) && imag(_Left) == imag(_Right));
- }
-template<class _Ty > inline
- bool __cdecl operator==(const complex<_Ty >& _Left,
- const _Ty& _Right)
- {
- return (real(_Left) == _Right && imag(_Left) == 0);
- }
-template<class _Ty > inline
- bool __cdecl operator==(const _Ty& _Left,
- const complex<_Ty >& _Right)
- {
- return (_Left == real(_Right) && 0 == imag(_Right));
- }
-
-template<class _Ty > inline
- bool __cdecl operator!=(const complex<_Ty >& _Left,
- const complex<_Ty >& _Right)
- {
- return (!(_Left == _Right));
- }
-template<class _Ty > inline
- bool __cdecl operator!=(const complex<_Ty >& _Left,
- const _Ty& _Right)
- {
- return (!(_Left == _Right));
- }
-template<class _Ty > inline
- bool __cdecl operator!=(const _Ty& _Left,
- const complex<_Ty >& _Right)
- {
- return (!(_Left == _Right));
- }
-
-template<class _Ty > inline
- _Ty __cdecl abs(const complex<_Ty >& _Left)
- {
- int _Leftexp;
- _Ty _Rho = _Fabs(_Left, &_Leftexp);
- if (_Leftexp == 0)
- return (_Rho);
- else
- return (_Ctraits<_Ty >::ldexp(_Rho, _Leftexp));
- }
-
-template<class _Ty > inline
- _Ty __cdecl arg(const complex<_Ty >& _Left)
- {
- return (_Ctraits<_Ty >::atan2(imag(_Left), real(_Left)));
- }
-
-template<class _Ty > inline
- complex<_Ty > __cdecl conj(const complex<_Ty >& _Left)
- {
- return (complex<_Ty >(real(_Left), -imag(_Left)));
- }
-
-template<class _Ty > inline
- complex<_Ty > __cdecl cos(const complex<_Ty >& _Left)
- {
- return (complex<_Ty >(
- _Ctraits<_Ty >::_Cosh(imag(_Left), _Ctraits<_Ty >::cos(real(_Left))),
- -_Ctraits<_Ty >::_Sinh(imag(_Left),
- _Ctraits<_Ty >::sin(real(_Left)))));
- }
-
-template<class _Ty > inline
- complex<_Ty > __cdecl cosh(const complex<_Ty >& _Left)
- {
- return (complex<_Ty >(
- _Ctraits<_Ty >::_Cosh(real(_Left), _Ctraits<_Ty >::cos(imag(_Left))),
- _Ctraits<_Ty >::_Sinh(real(_Left), _Ctraits<_Ty >::sin(imag(_Left)))));
- }
-
-template<class _Ty > inline
- complex<_Ty > __cdecl exp(const complex<_Ty >& _Left)
- {
- _Ty _Real(real(_Left)), _Imag(real(_Left));
- _Ctraits<_Ty >::_Exp(&_Real, _Ctraits<_Ty >::cos(imag(_Left)), 0);
- _Ctraits<_Ty >::_Exp(&_Imag, _Ctraits<_Ty >::sin(imag(_Left)), 0);
- return (complex<_Ty >(_Real, _Imag));
- }
-
-template<class _Ty > inline
- complex<_Ty > __cdecl log(const complex<_Ty >& _Left)
- {
- _Ty _Theta = _Ctraits<_Ty >::atan2(imag(_Left), real(_Left));
- if (_Ctraits<_Ty >::_Isnan(_Theta))
- return (complex<_Ty >(_Theta, _Theta));
- else
- {
- static const _Ty _Cm = (_Ty)(22713.0L / 32768.0L);
- static const _Ty _Cl =
- (_Ty)1.4286068203094172321214581765680755e-6L;
- int _Leftexp;
- _Ty _Rho = _Fabs(_Left, &_Leftexp);
- _Ty _Leftn = (_Ty)_Leftexp;
- complex<_Ty > _Tmp(
- _Rho == 0 ? -_Ctraits<_Ty >::_Infv(_Rho)
- : _Ctraits<_Ty >::_Isinf(_Rho) ? _Rho
- : _Ctraits<_Ty >::log(_Rho) + _Leftn * _Cl + _Leftn * _Cm,
- _Theta);
- return (_Tmp);
- }
- }
-
-template<class _Ty > inline
- complex<_Ty > __cdecl log10(const complex<_Ty >& _Left)
- {
- return (log(_Left) * (_Ty)0.43429448190325182765112891891660508L);
- }
-
-template<class _Ty > inline
- _Ty __cdecl norm(const complex<_Ty >& _Left)
- {
- return (real(_Left) * real(_Left) + imag(_Left) * imag(_Left));
- }
-
-template<class _Ty > inline
- complex<_Ty > __cdecl polar(const _Ty& _Rho, const _Ty& _Theta)
- {
- return (complex<_Ty >(_Rho * _Ctraits<_Ty >::cos(_Theta),
- _Rho * _Ctraits<_Ty >::sin(_Theta)));
- }
-template<class _Ty > inline
- complex<_Ty > __cdecl polar(const _Ty& _Rho)
- {
- return (complex<_Ty >(_Rho, (_Ty)0));
- }
-
-template<class _Ty > inline
- complex<_Ty > __cdecl pow(const complex<_Ty >& _Left, const _Ty& _Right)
- {
- if (imag(_Left) == 0 && 0 < real(_Left))
- return (complex<_Ty >(_Ctraits<_Ty >::pow(real(_Left), _Right)));
- else
- return (exp(_Right * log(_Left)));
- }
-template<class _Ty > inline
- complex<_Ty > __cdecl pow(const complex<_Ty >& _Left, int _Right)
- {
- complex<_Ty > _Tmp = _Left;
- unsigned int _Count = _Right;
- if (_Right < 0)
- _Count = 0 - _Count;
- for (complex<_Ty > _Zv = complex<_Ty >(1); ; _Tmp *= _Tmp)
- {
- if ((_Count & 1) != 0)
- _Zv *= _Tmp;
- if ((_Count >>= 1) == 0)
- return (_Right < 0 ? complex<_Ty >(1) / _Zv : _Zv);
- }
- }
-template<class _Ty > inline
- complex<_Ty > __cdecl pow(const _Ty& _Left, const complex<_Ty >& _Right)
- {
- if (imag(_Right) == 0)
- return (complex<_Ty >(_Ctraits<_Ty >::pow(_Left, real(_Right))));
- else if (0 < _Left)
- return (exp(_Right * _Ctraits<_Ty >::log(_Left)));
- else
- return (exp(_Right * log(complex<_Ty >(_Left))));
- }
-template<class _Ty > inline
- complex<_Ty > __cdecl pow(const complex<_Ty >& _Left,
- const complex<_Ty >& _Right)
- {
- if (imag(_Right) == 0)
- return (pow(_Left, real(_Right)));
- else if (imag(_Left) == 0)
- return (complex<_Ty >(pow(real(_Left), _Right)));
- else
- return (exp(_Right * log(_Left)));
- }
-
-template<class _Ty > inline
- complex<_Ty > __cdecl sin(const complex<_Ty >& _Left)
- {
- return (complex<_Ty >(
- _Ctraits<_Ty >::_Cosh(imag(_Left), _Ctraits<_Ty >::sin(real(_Left))),
- _Ctraits<_Ty >::_Sinh(imag(_Left), _Ctraits<_Ty >::cos(real(_Left)))));
- }
-
-template<class _Ty > inline
- complex<_Ty > __cdecl sinh(const complex<_Ty >& _Left)
- {
- return (complex<_Ty >(
- _Ctraits<_Ty >::_Sinh(real(_Left), _Ctraits<_Ty >::cos(imag(_Left))),
- _Ctraits<_Ty >::_Cosh(real(_Left), _Ctraits<_Ty >::sin(imag(_Left)))));
- }
-
-template<class _Ty > inline
- complex<_Ty > __cdecl sqrt(const complex<_Ty >& _Left)
- {
- int _Leftexp;
- _Ty _Rho = _Fabs(_Left, &_Leftexp);
- if (_Leftexp == 0)
- return (complex<_Ty >(_Rho, _Rho));
- else
- {
- _Ty _Realmag = _Ctraits<_Ty >::ldexp(real(_Left) < 0
- ? - real(_Left) : real(_Left), -_Leftexp);
- _Rho = _Ctraits<_Ty >::ldexp(_Ctraits<_Ty >::sqrt(
- 2 * (_Realmag + _Rho)), _Leftexp / 2 - 1);
- if (0 <= real(_Left))
- return (complex<_Ty >(_Rho, imag(_Left) / (2 * _Rho)));
- else if (imag(_Left) < 0)
- return (complex<_Ty >(-imag(_Left) / (2 * _Rho), -_Rho));
- else
- return (complex<_Ty >(imag(_Left) / (2 * _Rho), _Rho));
- }
- }
-
-template<class _Ty > inline
- complex<_Ty > __cdecl tanh(const complex<_Ty >& _Left)
- {
- _Ty _Tv = _Ctraits<_Ty >::tan(imag(_Left));
- _Ty _Sv = _Ctraits<_Ty >::_Sinh(real(_Left), (_Ty)(1));
- _Ty _Bv = _Sv *((_Ty)(1) + _Tv * _Tv);
- _Ty _Dv = (_Ty)(1) + _Bv * _Sv;
- return (complex<_Ty >((_Ctraits<_Ty >::sqrt((_Ty)(1) + _Sv * _Sv))
- * _Bv / _Dv, _Tv / _Dv));
- }
-
-template<class _Ty > inline
- complex<_Ty > __cdecl tan(const complex<_Ty >& _Left)
- {
- complex<_Ty > _Zv(tanh(complex<_Ty >(-imag(_Left), real(_Left))));
- return (complex<_Ty >(imag(_Zv), -real(_Zv)));
- }
-
@@ -140187,77 +187633,17 @@
-
-template<class _Ty,
- class _Elem,
- class _Tr> inline
- basic_istream<_Elem, _Tr>& __cdecl operator>>(
- basic_istream<_Elem, _Tr>& _Istr, complex<_Ty>& _Right)
- {
- typedef complex<_Ty> _Myt;
- const ctype<_Elem>& _Ctype_fac = use_facet<ctype<_Elem> >(_Istr.getloc());
- _Elem _Ch;
- long double _Real, _Imag = 0;
- if (_Istr >> _Ch && _Ch != _Ctype_fac.widen('('))
- {
- _Istr.putback(_Ch);
- _Istr >> _Real;
- _Imag = 0;
- }
- else if (_Istr >> _Real >> _Ch && _Ch != _Ctype_fac.widen(','))
- if (_Ch == _Ctype_fac.widen(')'))
- _Imag = 0;
- else
- {
- _Istr.putback(_Ch);
- _Istr.setstate(ios_base::failbit);
- }
- else if (_Istr >> _Imag >> _Ch && _Ch != _Ctype_fac.widen(')'))
- {
- _Istr.putback(_Ch);
- _Istr.setstate(ios_base::failbit);
- }
- if (!_Istr.fail())
- {
- _Ty _Tyreal((_Ty)_Real), _Tyimag((_Ty)_Imag);
- _Right = _Myt(_Tyreal, _Tyimag);
- }
- return (_Istr);
- }
-
-template<class _Ty,
- class _Elem,
- class _Tr> inline
- basic_ostream<_Elem, _Tr>& __cdecl operator<<(
- basic_ostream<_Elem, _Tr>& _Ostr, const complex<_Ty>& _Right)
- {
- const ctype<_Elem>& _Ctype_fac = use_facet<ctype<_Elem> >(_Ostr.getloc());
- basic_ostringstream<_Elem, _Tr, allocator<_Elem> > _Sstr;
- _Sstr.flags(_Ostr.flags());
- _Sstr.imbue(_Ostr.getloc());
- _Sstr.precision(_Ostr.precision());
- _Sstr << _Ctype_fac.widen('(') << real(_Right)
- << _Ctype_fac.widen(',') << imag(_Right)
- << _Ctype_fac.widen(')');
- basic_string<_Elem, _Tr, allocator<_Elem> > _Str = _Sstr.str();
- return (_Ostr << _Str.c_str());
- }
-
-}
- #pragma warning(default: 4244)
-#pragma warning(pop)
-#pragma pack(pop)
@@ -140832,13 +188218,33 @@
+namespace boost {
+namespace detail {
+template <typename T, bool is_vol>
+struct remove_const_helper
+{
+ typedef T type;
+};
+template <typename T>
+struct remove_const_helper<T, true>
+{
+ typedef T volatile type;
+};
+template <typename T>
+struct remove_const_impl
+{
+ typedef typename remove_const_helper<
+ typename cv_traits_imp<T*>::unqualified_type
+ , ::boost::is_volatile<T>::value
+ >::type type;
+};
@@ -140852,10 +188258,15 @@
+}
+template< typename T > struct remove_const { typedef typename boost::detail::remove_const_impl<T>::type type; };
+template< typename T > struct remove_const<T&> { typedef T& type; };
+template< typename T, std::size_t N > struct remove_const<T const[N]> { typedef T type[N]; };
+template< typename T, std::size_t N > struct remove_const<T const volatile[N]> { typedef T volatile type[N]; };
@@ -140864,6 +188275,7 @@
+}
@@ -140989,20 +188401,10 @@
-namespace boost {
-namespace detail{
-struct is_convertible_from_tester
-{
- template <class T>
- is_convertible_from_tester(const std::complex<T>&);
-};
-}
-template< typename T > struct is_complex : ::boost::integral_constant<bool,(::boost::is_convertible<T, boost::detail::is_convertible_from_tester>::value)> { };
-}
@@ -141903,9 +189305,15 @@
+namespace boost {
+template< typename T > struct remove_pointer { typedef T type; };
+template< typename T > struct remove_pointer<T*> { typedef T type; };
+template< typename T > struct remove_pointer<T* const> { typedef T type; };
+template< typename T > struct remove_pointer<T* volatile> { typedef T type; };
+template< typename T > struct remove_pointer<T* const volatile> { typedef T type; };
@@ -141913,6 +189321,7 @@
+}
@@ -141981,29 +189390,16 @@
-namespace boost {
-namespace detail {
-template <typename T>
-struct is_fundamental_impl
- : ::boost::type_traits::ice_or<
- ::boost::is_arithmetic<T>::value
- , ::boost::is_void<T>::value
- >
-{
-};
-}
-template< typename T > struct is_fundamental : ::boost::integral_constant<bool,::boost::detail::is_fundamental_impl<T>::value> { };
-}
@@ -142790,27 +190186,17 @@
-namespace boost {
-namespace detail {
-template <typename T>
-struct is_compound_impl
-{
- static const bool value = (::boost::type_traits::ice_not< ::boost::is_fundamental<T>::value >::value);
-};
-}
-template< typename T > struct is_compound : ::boost::integral_constant<bool,::boost::detail::is_compound_impl<T>::value> { };
-}
@@ -143222,12 +190608,32 @@
+namespace boost {
+namespace detail {
+template <typename T, bool is_const>
+struct remove_volatile_helper
+{
+ typedef T type;
+};
+template <typename T>
+struct remove_volatile_helper<T,true>
+{
+ typedef T const type;
+};
+template <typename T>
+struct remove_volatile_impl
+{
+ typedef typename remove_volatile_helper<
+ typename cv_traits_imp<T*>::unqualified_type
+ , ::boost::is_const<T>::value
+ >::type type;
+};
@@ -143240,10 +190646,15 @@
+}
+template< typename T > struct remove_volatile { typedef typename boost::detail::remove_volatile_impl<T>::type type; };
+template< typename T > struct remove_volatile<T&> { typedef T& type; };
+template< typename T, std::size_t N > struct remove_volatile<T volatile[N]> { typedef T type[N]; };
+template< typename T, std::size_t N > struct remove_volatile<T const volatile[N]> { typedef T const type[N]; };
@@ -143252,6 +190663,7 @@
+}
@@ -144970,11 +192382,19 @@
+namespace boost {
+namespace type_traits { namespace detail {
+template <class T> struct need_promotion : boost::is_enum<T> {};
+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 {};
@@ -145001,6 +192421,8 @@
+template<> struct need_promotion<boost::ulong_long_type> : integral_constant<bool, (sizeof(boost::ulong_long_type) < sizeof(int))> {};
+template<> struct need_promotion<boost::long_long_type> : integral_constant<bool, (sizeof(boost::long_long_type) < sizeof(int))> {};
@@ -145011,15 +192433,18 @@
+template<> struct need_promotion<wchar_t> : true_type {};
+template<> struct need_promotion<bool> : true_type {};
+template<int Index, int IsConst, int IsVolatile> struct promote_from_index;
@@ -145028,6 +192453,10 @@
+template<> struct promote_from_index<1,0,0> { typedef int type; }; template<> struct promote_from_index<1,0,1> { typedef int volatile type; }; template<> struct promote_from_index<1,1,0> { typedef int const type; }; template<> struct promote_from_index<1,1,1> { typedef int const volatile type; };
+template<> struct promote_from_index<2,0,0> { typedef unsigned int type; }; template<> struct promote_from_index<2,0,1> { typedef unsigned int volatile type; }; template<> struct promote_from_index<2,1,0> { typedef unsigned int const type; }; template<> struct promote_from_index<2,1,1> { typedef unsigned int const volatile type; };
+template<> struct promote_from_index<3,0,0> { typedef long type; }; template<> struct promote_from_index<3,0,1> { typedef long volatile type; }; template<> struct promote_from_index<3,1,0> { typedef long const type; }; template<> struct promote_from_index<3,1,1> { typedef long const volatile type; };
+template<> struct promote_from_index<4,0,0> { typedef unsigned long type; }; template<> struct promote_from_index<4,0,1> { typedef unsigned long volatile type; }; template<> struct promote_from_index<4,1,0> { typedef unsigned long const type; }; template<> struct promote_from_index<4,1,1> { typedef unsigned long const volatile type; };
@@ -145036,6 +192465,8 @@
+template<> struct promote_from_index<5,0,0> { typedef boost::long_long_type type; }; template<> struct promote_from_index<5,0,1> { typedef boost::long_long_type volatile type; }; template<> struct promote_from_index<5,1,0> { typedef boost::long_long_type const type; }; template<> struct promote_from_index<5,1,1> { typedef boost::long_long_type const volatile type; };
+template<> struct promote_from_index<6,0,0> { typedef boost::ulong_long_type type; }; template<> struct promote_from_index<6,0,1> { typedef boost::ulong_long_type volatile type; }; template<> struct promote_from_index<6,1,0> { typedef boost::ulong_long_type const type; }; template<> struct promote_from_index<6,1,1> { typedef boost::ulong_long_type const volatile type; };
@@ -145063,8 +192494,14 @@
+char (&promoted_index_tester(int))[1];
+char (&promoted_index_tester(unsigned int))[2];
+char (&promoted_index_tester(long))[3];
+char (&promoted_index_tester(unsigned long))[4];
+char (&promoted_index_tester(boost::long_long_type))[5];
+char (&promoted_index_tester(boost::ulong_long_type))[6];
@@ -145075,10 +192512,38 @@
+template<class T>
+struct promoted_index
+{
+ static T testee;
+ static const int value = sizeof(promoted_index_tester(+testee));
+
+};
+template<class T>
+struct integral_promotion_impl
+{
+ typedef typename promote_from_index<
+ (boost::type_traits::detail::promoted_index<T>::value)
+ , (boost::is_const<T>::value)
+ , (boost::is_volatile<T>::value)
+ >::type type;
+};
+template<class T>
+struct integral_promotion
+ : boost::mpl::eval_if<
+ need_promotion<typename remove_cv<T>::type>
+ , integral_promotion_impl<T>
+ , boost::mpl::identity<T>
+ >
+{
+};
+} }
+template< typename T > struct integral_promotion { typedef typename boost::type_traits::detail::integral_promotion<T>::type type; };
+}
@@ -145337,54 +192802,22 @@
-namespace boost {
-namespace detail {
-#pragma warning(push)
-#pragma warning(disable:4624)
-template <typename T>
-struct empty_helper_t1 : public T
-{
- empty_helper_t1();
- int i[256];
-private:
-
- empty_helper_t1(const empty_helper_t1&);
- empty_helper_t1& operator=(const empty_helper_t1&);
-};
-#pragma warning(pop)
-struct empty_helper_t2 { int i[256]; };
-template <typename T, bool is_a_class = false>
-struct empty_helper
-{
- static const bool value = false;
-};
-template <typename T>
-struct empty_helper<T, true>
-{
- static const bool value = (sizeof(empty_helper_t1<T>) == sizeof(empty_helper_t2));
-};
-template <typename T>
-struct is_empty_impl
-{
- typedef typename remove_cv<T>::type cvt;
- static const bool value = ( ::boost::type_traits::ice_or< ::boost::detail::empty_helper<cvt,::boost::is_class<T>::value>::value , __is_empty(cvt) >::value );
-};
@@ -145500,18 +192933,11 @@
-template<> struct is_empty_impl< void > { static const bool value = (false); };
-template<> struct is_empty_impl< void const > { static const bool value = (false); };
-template<> struct is_empty_impl< void volatile > { static const bool value = (false); };
-template<> struct is_empty_impl< void const volatile > { static const bool value = (false); };
-}
-template< typename T > struct is_empty : ::boost::integral_constant<bool,::boost::detail::is_empty_impl<T>::value> { };
-}
@@ -145958,10 +193384,22 @@
+namespace boost {
+namespace detail {
+template<class T>
+struct promote_impl
+ : integral_promotion<
+ typename floating_point_promotion<T>::type
+ >
+{
+};
+}
+template< typename T > struct promote { typedef typename boost::detail::promote_impl<T>::type type; };
+}
@@ -146497,15 +193935,9 @@
-namespace boost {
-template< typename T > struct is_floating_point : ::boost::integral_constant<bool,false> { };
-template<> struct is_floating_point< float > : ::boost::integral_constant<bool,true> { }; template<> struct is_floating_point< float const > : ::boost::integral_constant<bool,true> { }; template<> struct is_floating_point< float volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_floating_point< float const volatile > : ::boost::integral_constant<bool,true> { };
-template<> struct is_floating_point< double > : ::boost::integral_constant<bool,true> { }; template<> struct is_floating_point< double const > : ::boost::integral_constant<bool,true> { }; template<> struct is_floating_point< double volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_floating_point< double const volatile > : ::boost::integral_constant<bool,true> { };
-template<> struct is_floating_point< long double > : ::boost::integral_constant<bool,true> { }; template<> struct is_floating_point< long double const > : ::boost::integral_constant<bool,true> { }; template<> struct is_floating_point< long double volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_floating_point< long double const volatile > : ::boost::integral_constant<bool,true> { };
-}
@@ -147021,6 +194453,7 @@
+
@@ -148169,21 +195602,11 @@
-namespace boost {
-namespace detail{
-template <typename T>
-struct is_member_object_pointer_impl
-{
- static const bool value = (::boost::type_traits::ice_and< ::boost::is_member_pointer<T>::value, ::boost::type_traits::ice_not< ::boost::is_member_function_pointer<T>::value >::value >::value );
-};
-}
-template< typename T > struct is_member_object_pointer : ::boost::integral_constant<bool,::boost::detail::is_member_object_pointer_impl<T>::value> { };
-}
@@ -149404,15 +196827,9 @@
-namespace boost {
-namespace detail {
-template <typename T>
-struct is_object_impl
-{
- static const bool value = (::boost::type_traits::ice_and< ::boost::type_traits::ice_not< ::boost::is_reference<T>::value>::value, ::boost::type_traits::ice_not< ::boost::is_void<T>::value>::value, ::boost::type_traits::ice_not< ::boost::is_function<T>::value>::value >::value);
@@ -149420,13 +196837,9 @@
-};
-}
-template< typename T > struct is_object : ::boost::integral_constant<bool,::boost::detail::is_object_impl<T>::value> { };
-}
@@ -151094,89 +198507,28 @@
-namespace boost{
-namespace detail{
-template <class T>
-struct is_polymorphic_imp1
-{
- typedef typename remove_cv<T>::type ncvT;
- struct d1 : public ncvT
- {
- d1();
- ~d1()throw();
- char padding[256];
- private:
-
- d1(const d1&);
- d1& operator=(const d1&);
- };
- struct d2 : public ncvT
- {
- d2();
- virtual ~d2()throw();
- char padding[256];
- private:
-
- d2(const d2&);
- d2& operator=(const d2&);
- };
- static const bool value = (sizeof(d2) == sizeof(d1));
-};
-template <class T>
-struct is_polymorphic_imp2
-{
- static const bool value = false;
-};
-template <bool is_class>
-struct is_polymorphic_selector
-{
- template <class T>
- struct rebind
- {
- typedef is_polymorphic_imp2<T> type;
- };
-};
-template <>
-struct is_polymorphic_selector<true>
-{
- template <class T>
- struct rebind
- {
- typedef is_polymorphic_imp1<T> type;
- };
-};
-template <class T>
-struct is_polymorphic_imp
-{
- typedef is_polymorphic_selector< ::boost::is_class<T>::value> selector;
- typedef typename selector::template rebind<T> binder;
- typedef typename binder::type imp_type;
- static const bool value = imp_type::value;
-};
-}
-template< typename T > struct is_polymorphic : ::boost::integral_constant<bool,::boost::detail::is_polymorphic_imp<T>::value> { };
@@ -151184,7 +198536,6 @@
-}
@@ -152585,70 +199936,20 @@
-namespace boost {
-namespace detail{
-template <class T>
-struct is_signed_values
-{
-
-
-
-
-
- typedef typename remove_cv<T>::type no_cv_t;
- 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>
-struct is_signed_helper
-{
- typedef typename remove_cv<T>::type no_cv_t;
- static const bool value = (!(::boost::detail::is_signed_values<T>::minus_one > boost::detail::is_signed_values<T>::zero));
-};
-template <bool integral_type>
-struct is_signed_select_helper
-{
- template <class T>
- struct rebind
- {
- typedef is_signed_helper<T> type;
- };
-};
-template <>
-struct is_signed_select_helper<false>
-{
- template <class T>
- struct rebind
- {
- typedef false_type type;
- };
-};
-template <class T>
-struct is_signed_imp
-{
- typedef is_signed_select_helper<
- ::boost::type_traits::ice_or<
- ::boost::is_integral<T>::value,
- ::boost::is_enum<T>::value>::value
- > selector;
- typedef typename selector::template rebind<T> binder;
- typedef typename binder::type type;
- static const bool value = type::value;
-};
@@ -152665,6 +199966,8 @@
+extern boost::scope_exit::aux::undeclared
+ boost_local_auxXargs;
@@ -152690,17 +199993,14 @@
-}
-template< typename T > struct is_signed : ::boost::integral_constant<bool,::boost::detail::is_signed_imp<T>::value> { };
-}
@@ -154242,21 +201542,11 @@
-namespace boost {
-namespace detail {
-template <typename T>
-struct is_stateless_impl
-{
- static const bool value = (::boost::type_traits::ice_and< ::boost::has_trivial_constructor<T>::value, ::boost::has_trivial_copy<T>::value, ::boost::has_trivial_destructor<T>::value, ::boost::is_class<T>::value, ::boost::is_empty<T>::value >::value);
-};
-}
-template< typename T > struct is_stateless : ::boost::integral_constant<bool,::boost::detail::is_stateless_impl<T>::value> { };
-}
@@ -155456,15 +202746,8 @@
-namespace boost {
-namespace detail {
-template <typename T> struct is_union_impl
-{
- typedef typename remove_cv<T>::type cvt;
- static const bool value = __is_union(cvt);
-};
@@ -155476,11 +202759,8 @@
-}
-template< typename T > struct is_union : ::boost::integral_constant<bool,::boost::detail::is_union_impl<T>::value> { };
-}
@@ -156639,65 +203919,16 @@
-namespace boost {
-namespace detail{
-template <class T>
-struct is_unsigned_values
-{
-
-
-
-
-
- typedef typename remove_cv<T>::type no_cv_t;
- 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>
-struct is_ununsigned_helper
-{
- static const bool value = (::boost::detail::is_unsigned_values<T>::minus_one > ::boost::detail::is_unsigned_values<T>::zero);
-};
-template <bool integral_type>
-struct is_ununsigned_select_helper
-{
- template <class T>
- struct rebind
- {
- typedef is_ununsigned_helper<T> type;
- };
-};
-template <>
-struct is_ununsigned_select_helper<false>
-{
- template <class T>
- struct rebind
- {
- typedef false_type type;
- };
-};
-template <class T>
-struct is_unsigned_imp
-{
- typedef is_ununsigned_select_helper<
- ::boost::type_traits::ice_or<
- ::boost::is_integral<T>::value,
- ::boost::is_enum<T>::value>::value
- > selector;
- typedef typename selector::template rebind<T> binder;
- typedef typename binder::type type;
- static const bool value = type::value;
-};
@@ -156739,17 +203970,14 @@
-}
-template< typename T > struct is_unsigned : ::boost::integral_constant<bool,::boost::detail::is_unsigned_imp<T>::value> { };
-}
@@ -156830,7 +204058,6 @@
-
@@ -156842,7 +204069,6 @@
-
@@ -158032,55 +205258,16 @@
-namespace boost { namespace mpl {
-namespace aux {
-template< bool C_, typename T1, typename T2, typename T3, typename T4 >
-struct and_impl
- : false_
-{
-};
-template< typename T1, typename T2, typename T3, typename T4 >
-struct and_impl< true,T1,T2,T3,T4 >
- : and_impl<
- T1::type::value
- , T2, T3, T4
- , true_
- >
-{
-};
-template<>
-struct and_impl<
- true
- , true_, true_, true_, true_
- >
- : true_
-{
-};
-}
-template<
- typename T1 = na
- , typename T2 = na
- , typename T3 = true_, typename T4 = true_, typename T5 = true_
- >
-struct and_
- : aux::and_impl<
- T1::type::value
- , T2, T3, T4, T5
- >
-{
-};
-template<> struct and_< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : and_< T1 , T2 > { }; }; template< typename Tag > struct lambda< and_< na , na > , Tag > { typedef false_ is_le; typedef and_< na , na > result_; typedef and_< na , na > type; };
-}}
@@ -158601,33 +205788,13 @@
-namespace boost { namespace mpl {
-namespace aux {
-template< long C_ >
-struct not_impl
- : bool_<!C_>
-{
-};
-}
-template<
- typename T = na
- >
-struct not_
- : aux::not_impl<
- T::type::value
- >
-{
-
-};
-template<> struct not_< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : not_< T1 > { }; }; template< typename Tag > struct lambda< not_< na > , Tag > { typedef false_ is_le; typedef not_< na > result_; typedef not_< na > type; };
-}}
@@ -158993,6 +206160,7 @@
+
@@ -159000,7 +206168,10 @@
+namespace boost { namespace local { namespace aux {
+template<typename F, unsigned int defaults_count = 0>
+struct abstract_function {};
@@ -159351,26 +206522,14 @@
-namespace boost {
-namespace detail {
-#pragma warning( push )
-#pragma warning( disable : 4584 )
-template<typename Base, typename Derived, typename tag>
-struct is_virtual_base_of_impl
-{
- static const bool value = false;
-};
-template<typename Base, typename Derived>
-struct is_virtual_base_of_impl<Base, Derived, mpl::true_>
-{
@@ -159387,47 +206546,17 @@
- struct boost_type_traits_internal_struct_X : Derived, virtual Base
- {
- 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 boost_type_traits_internal_struct_Y : Derived
- {
- 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();
- };
- static const bool value = (sizeof(boost_type_traits_internal_struct_X)==sizeof(boost_type_traits_internal_struct_Y));
-};
-template<typename Base, typename Derived>
-struct is_virtual_base_of_impl2
-{
- typedef typename mpl::and_<is_base_of<Base, Derived>, mpl::not_<is_same<Base, Derived> > >::type tag_type;
- typedef is_virtual_base_of_impl<Base, Derived, tag_type> imp;
- static const bool value = imp::value;
-};
-#pragma warning( pop )
-}
-template< typename Base, typename Derived > struct is_virtual_base_of : ::boost::integral_constant<bool,(::boost::detail::is_virtual_base_of_impl2<Base,Derived>::value)> { };
-template< typename Base, typename Derived > struct is_virtual_base_of< Base&,Derived > : ::boost::integral_constant<bool,false> { };
-template< typename Base, typename Derived > struct is_virtual_base_of< Base,Derived& > : ::boost::integral_constant<bool,false> { };
-template< typename Base, typename Derived > struct is_virtual_base_of< Base&,Derived& > : ::boost::integral_constant<bool,false> { };
-}
@@ -160660,6 +207789,17 @@
+template<typename R
+
+
+>
+struct abstract_function<
+ R ()
+ , 0
+> {
+
+ virtual R operator()() = 0;
+};
@@ -161606,105 +208746,27 @@
-namespace boost {
-namespace detail {
-template <class T>
-struct make_unsigned_imp
-{
- typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)((::boost::type_traits::ice_or< ::boost::is_integral<T>::value, ::boost::is_enum<T>::value>::value)) >)> boost_static_assert_typedef_5;
- typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)((::boost::type_traits::ice_not< ::boost::is_same< typename remove_cv<T>::type, bool>::value>::value)) >)> boost_static_assert_typedef_6;
- typedef typename remove_cv<T>::type t_no_cv;
- typedef typename mpl::if_c<
- (::boost::type_traits::ice_and<
- ::boost::is_unsigned<T>::value,
- ::boost::is_integral<T>::value,
- ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, char>::value>::value,
- ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, wchar_t>::value>::value,
- ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, bool>::value>::value >::value),
- T,
- typename mpl::if_c<
- (::boost::type_traits::ice_and<
- ::boost::is_integral<T>::value,
- ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, char>::value>::value,
- ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, wchar_t>::value>::value,
- ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, bool>::value>::value>
- ::value),
- typename mpl::if_<
- is_same<t_no_cv, signed char>,
- unsigned char,
- typename mpl::if_<
- is_same<t_no_cv, short>,
- unsigned short,
- typename mpl::if_<
- is_same<t_no_cv, int>,
- unsigned int,
- typename mpl::if_<
- is_same<t_no_cv, long>,
- unsigned long,
- boost::ulong_long_type
- >::type
- >::type
- >::type
- >::type,
-
- typename mpl::if_c<
- sizeof(t_no_cv) == sizeof(unsigned char),
- unsigned char,
- typename mpl::if_c<
- sizeof(t_no_cv) == sizeof(unsigned short),
- unsigned short,
- typename mpl::if_c<
- sizeof(t_no_cv) == sizeof(unsigned int),
- unsigned int,
- typename mpl::if_c<
- sizeof(t_no_cv) == sizeof(unsigned long),
- unsigned long,
- boost::ulong_long_type
- >::type
- >::type
- >::type
- >::type
- >::type
- >::type base_integer_type;
-
-
- typedef typename mpl::if_<
- is_const<T>,
- typename add_const<base_integer_type>::type,
- base_integer_type
- >::type const_base_integer_type;
-
-
- typedef typename mpl::if_<
- is_volatile<T>,
- typename add_volatile<const_base_integer_type>::type,
- const_base_integer_type
- >::type type;
-};
-}
-template< typename T > struct make_unsigned { typedef typename boost::detail::make_unsigned_imp<T>::type type; };
-}
@@ -162935,6 +209997,17 @@
+template<typename R
+ ,
+ typename A0
+>
+struct abstract_function<
+ R ( A0)
+ , 0
+> {
+
+ virtual R operator()( A0) = 0;
+};
@@ -163012,6 +210085,17 @@
+template<typename R
+ ,
+ typename A0
+>
+struct abstract_function<
+ R ( A0)
+ , 1
+> {
+
+ virtual R operator()( A0) = 0; virtual R operator()() = 0;
+};
@@ -163722,105 +210806,27 @@
-namespace boost {
-namespace detail {
-template <class T>
-struct make_signed_imp
-{
- typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)((::boost::type_traits::ice_or< ::boost::is_integral<T>::value, ::boost::is_enum<T>::value>::value)) >)> boost_static_assert_typedef_7;
- typedef ::boost::static_assert_test< sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)((::boost::type_traits::ice_not< ::boost::is_same< typename remove_cv<T>::type, bool>::value>::value)) >)> boost_static_assert_typedef_8;
- typedef typename remove_cv<T>::type t_no_cv;
- typedef typename mpl::if_c<
- (::boost::type_traits::ice_and<
- ::boost::is_signed<T>::value,
- ::boost::is_integral<T>::value,
- ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, char>::value>::value,
- ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, wchar_t>::value>::value,
- ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, bool>::value>::value >::value),
- T,
- typename mpl::if_c<
- (::boost::type_traits::ice_and<
- ::boost::is_integral<T>::value,
- ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, char>::value>::value,
- ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, wchar_t>::value>::value,
- ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, bool>::value>::value>
- ::value),
- typename mpl::if_<
- is_same<t_no_cv, unsigned char>,
- signed char,
- typename mpl::if_<
- is_same<t_no_cv, unsigned short>,
- signed short,
- typename mpl::if_<
- is_same<t_no_cv, unsigned int>,
- int,
- typename mpl::if_<
- is_same<t_no_cv, unsigned long>,
- long,
- boost::long_long_type
- >::type
- >::type
- >::type
- >::type,
-
- typename mpl::if_c<
- sizeof(t_no_cv) == sizeof(unsigned char),
- signed char,
- typename mpl::if_c<
- sizeof(t_no_cv) == sizeof(unsigned short),
- signed short,
- typename mpl::if_c<
- sizeof(t_no_cv) == sizeof(unsigned int),
- int,
- typename mpl::if_c<
- sizeof(t_no_cv) == sizeof(unsigned long),
- long,
- boost::long_long_type
- >::type
- >::type
- >::type
- >::type
- >::type
- >::type base_integer_type;
-
-
- typedef typename mpl::if_<
- is_const<T>,
- typename add_const<base_integer_type>::type,
- base_integer_type
- >::type const_base_integer_type;
-
-
- typedef typename mpl::if_<
- is_volatile<T>,
- typename add_volatile<const_base_integer_type>::type,
- const_base_integer_type
- >::type type;
-};
-}
-template< typename T > struct make_signed { typedef typename boost::detail::make_signed_imp<T>::type type; };
-}
@@ -164379,76 +211385,26 @@
-namespace boost {
-namespace detail{
-template <class T, std::size_t N>
-struct rank_imp
-{
- static const std::size_t value = N;
-};
-template <class T, std::size_t R, std::size_t N>
-struct rank_imp<T[R], N>
-{
- static const std::size_t value = (::boost::detail::rank_imp<T, N+1>::value);
-};
-template <class T, std::size_t R, std::size_t N>
-struct rank_imp<T const[R], N>
-{
- static const std::size_t value = (::boost::detail::rank_imp<T, N+1>::value);
-};
-template <class T, std::size_t R, std::size_t N>
-struct rank_imp<T volatile[R], N>
-{
- static const std::size_t value = (::boost::detail::rank_imp<T, N+1>::value);
-};
-template <class T, std::size_t R, std::size_t N>
-struct rank_imp<T const volatile[R], N>
-{
- static const std::size_t value = (::boost::detail::rank_imp<T, N+1>::value);
-};
-template <class T, std::size_t N>
-struct rank_imp<T[], N>
-{
- static const std::size_t value = (::boost::detail::rank_imp<T, N+1>::value);
-};
-template <class T, std::size_t N>
-struct rank_imp<T const[], N>
-{
- static const std::size_t value = (::boost::detail::rank_imp<T, N+1>::value);
-};
-template <class T, std::size_t N>
-struct rank_imp<T volatile[], N>
-{
- static const std::size_t value = (::boost::detail::rank_imp<T, N+1>::value);
-};
-template <class T, std::size_t N>
-struct rank_imp<T const volatile[], N>
-{
- static const std::size_t value = (::boost::detail::rank_imp<T, N+1>::value);
-};
-}
-template< typename T > struct rank : ::boost::integral_constant<std::size_t,(::boost::detail::rank_imp<T,0>::value)> { };
-}
@@ -165324,25 +212280,25 @@
-namespace boost {
-template< typename T > struct remove_extent { typedef T type; };
-template< typename T, std::size_t N > struct remove_extent<T[N]> { typedef T type; };
-template< typename T, std::size_t N > struct remove_extent<T const[N]> { typedef T const type; };
-template< typename T, std::size_t N > struct remove_extent<T volatile[N]> { typedef T volatile type; };
-template< typename T, std::size_t N > struct remove_extent<T const volatile[N]> { typedef T const volatile type; };
-template< typename T > struct remove_extent<T[]> { typedef T type; };
-template< typename T > struct remove_extent<T const[]> { typedef T const type; };
-template< typename T > struct remove_extent<T volatile[]> { typedef T volatile type; };
-template< typename T > struct remove_extent<T const volatile[]> { typedef T const volatile type; };
-}
+template<typename R
+ ,
+ typename A0 , typename A1
+>
+struct abstract_function<
+ R ( A0 , A1)
+ , 0
+> {
+
+ virtual R operator()( A0 , A1) = 0;
+};
@@ -165420,6 +212376,17 @@
+template<typename R
+ ,
+ typename A0 , typename A1
+>
+struct abstract_function<
+ R ( A0 , A1)
+ , 1
+> {
+
+ virtual R operator()( A0 , A1) = 0; virtual R operator()( A0) = 0;
+};
@@ -165497,6 +212464,17 @@
+template<typename R
+ ,
+ typename A0 , typename A1
+>
+struct abstract_function<
+ R ( A0 , A1)
+ , 2
+> {
+
+ virtual R operator()( A0 , A1) = 0; virtual R operator()( A0) = 0; virtual R operator()() = 0;
+};
@@ -166172,24 +213150,13 @@
-namespace boost {
-template< typename T > struct remove_all_extents { typedef T type; };
-template< typename T, std::size_t N > struct remove_all_extents<T[N]> { typedef typename boost::remove_all_extents<T>::type type; };
-template< typename T, std::size_t N > struct remove_all_extents<T const[N]> { typedef typename boost::remove_all_extents<T const>::type type; };
-template< typename T, std::size_t N > struct remove_all_extents<T volatile[N]> { typedef typename boost::remove_all_extents<T volatile>::type type; };
-template< typename T, std::size_t N > struct remove_all_extents<T const volatile[N]> { typedef typename boost::remove_all_extents<T const volatile>::type type; };
-template< typename T > struct remove_all_extents<T[]> { typedef typename boost::remove_all_extents<T>::type type; };
-template< typename T > struct remove_all_extents<T const[]> { typedef typename boost::remove_all_extents<T const>::type type; };
-template< typename T > struct remove_all_extents<T volatile[]> { typedef typename boost::remove_all_extents<T volatile>::type type; };
-template< typename T > struct remove_all_extents<T const volatile[]> { typedef typename boost::remove_all_extents<T const volatile>::type type; };
-}
@@ -167393,33 +214360,13 @@
-namespace boost {
-namespace detail {
-template <typename T, bool is_vol>
-struct remove_const_helper
-{
- typedef T type;
-};
-template <typename T>
-struct remove_const_helper<T, true>
-{
- typedef T volatile type;
-};
-template <typename T>
-struct remove_const_impl
-{
- typedef typename remove_const_helper<
- typename cv_traits_imp<T*>::unqualified_type
- , ::boost::is_volatile<T>::value
- >::type type;
-};
@@ -167433,15 +214380,10 @@
-}
-template< typename T > struct remove_const { typedef typename boost::detail::remove_const_impl<T>::type type; };
-template< typename T > struct remove_const<T&> { typedef T& type; };
-template< typename T, std::size_t N > struct remove_const<T const[N]> { typedef T type[N]; };
-template< typename T, std::size_t N > struct remove_const<T const volatile[N]> { typedef T volatile type[N]; };
@@ -167450,7 +214392,6 @@
-}
@@ -167721,6 +214662,17 @@
+template<typename R
+ ,
+ typename A0 , typename A1 , typename A2
+>
+struct abstract_function<
+ R ( A0 , A1 , A2)
+ , 0
+> {
+
+ virtual R operator()( A0 , A1 , A2) = 0;
+};
@@ -167798,6 +214750,17 @@
+template<typename R
+ ,
+ typename A0 , typename A1 , typename A2
+>
+struct abstract_function<
+ R ( A0 , A1 , A2)
+ , 1
+> {
+
+ virtual R operator()( A0 , A1 , A2) = 0; virtual R operator()( A0 , A1) = 0;
+};
@@ -167875,6 +214838,17 @@
+template<typename R
+ ,
+ typename A0 , typename A1 , typename A2
+>
+struct abstract_function<
+ R ( A0 , A1 , A2)
+ , 2
+> {
+
+ virtual R operator()( A0 , A1 , A2) = 0; virtual R operator()( A0 , A1) = 0; virtual R operator()( A0) = 0;
+};
@@ -167952,6 +214926,17 @@
+template<typename R
+ ,
+ typename A0 , typename A1 , typename A2
+>
+struct abstract_function<
+ R ( A0 , A1 , A2)
+ , 3
+> {
+
+ virtual R operator()( A0 , A1 , A2) = 0; virtual R operator()( A0 , A1) = 0; virtual R operator()( A0) = 0; virtual R operator()() = 0;
+};
@@ -168480,15 +215465,9 @@
-namespace boost {
-template< typename T > struct remove_pointer { typedef T type; };
-template< typename T > struct remove_pointer<T*> { typedef T type; };
-template< typename T > struct remove_pointer<T* const> { typedef T type; };
-template< typename T > struct remove_pointer<T* volatile> { typedef T type; };
-template< typename T > struct remove_pointer<T* const volatile> { typedef T type; };
@@ -168496,7 +215475,6 @@
-}
@@ -169783,32 +216761,12 @@
-namespace boost {
-namespace detail {
-template <typename T, bool is_const>
-struct remove_volatile_helper
-{
- typedef T type;
-};
-template <typename T>
-struct remove_volatile_helper<T,true>
-{
- typedef T const type;
-};
-template <typename T>
-struct remove_volatile_impl
-{
- typedef typename remove_volatile_helper<
- typename cv_traits_imp<T*>::unqualified_type
- , ::boost::is_const<T>::value
- >::type type;
-};
@@ -169821,15 +216779,10 @@
-}
-template< typename T > struct remove_volatile { typedef typename boost::detail::remove_volatile_impl<T>::type type; };
-template< typename T > struct remove_volatile<T&> { typedef T& type; };
-template< typename T, std::size_t N > struct remove_volatile<T volatile[N]> { typedef T type[N]; };
-template< typename T, std::size_t N > struct remove_volatile<T const volatile[N]> { typedef T const type[N]; };
@@ -169838,7 +216791,6 @@
-}
@@ -170167,6 +217119,17 @@
+template<typename R
+ ,
+ typename A0 , typename A1 , typename A2 , typename A3
+>
+struct abstract_function<
+ R ( A0 , A1 , A2 , A3)
+ , 0
+> {
+
+ virtual R operator()( A0 , A1 , A2 , A3) = 0;
+};
@@ -170244,6 +217207,17 @@
+template<typename R
+ ,
+ typename A0 , typename A1 , typename A2 , typename A3
+>
+struct abstract_function<
+ R ( A0 , A1 , A2 , A3)
+ , 1
+> {
+
+ virtual R operator()( A0 , A1 , A2 , A3) = 0; virtual R operator()( A0 , A1 , A2) = 0;
+};
@@ -170321,6 +217295,17 @@
+template<typename R
+ ,
+ typename A0 , typename A1 , typename A2 , typename A3
+>
+struct abstract_function<
+ R ( A0 , A1 , A2 , A3)
+ , 2
+> {
+
+ virtual R operator()( A0 , A1 , A2 , A3) = 0; virtual R operator()( A0 , A1 , A2) = 0; virtual R operator()( A0 , A1) = 0;
+};
@@ -170398,6 +217383,17 @@
+template<typename R
+ ,
+ typename A0 , typename A1 , typename A2 , typename A3
+>
+struct abstract_function<
+ R ( A0 , A1 , A2 , A3)
+ , 3
+> {
+
+ virtual R operator()( A0 , A1 , A2 , A3) = 0; virtual R operator()( A0 , A1 , A2) = 0; virtual R operator()( A0 , A1) = 0; virtual R operator()( A0) = 0;
+};
@@ -170475,6 +217471,19 @@
+template<typename R
+ ,
+ typename A0 , typename A1 , typename A2 , typename A3
+>
+struct abstract_function<
+ R ( A0 , A1 , A2 , A3)
+ , 4
+> {
+
+ virtual R operator()( A0 , A1 , A2 , A3) = 0; virtual R operator()( A0 , A1 , A2) = 0; virtual R operator()( A0 , A1) = 0; virtual R operator()( A0) = 0; virtual R operator()() = 0;
+};
+
+
@@ -171557,19 +218566,11 @@
-namespace boost {
-namespace type_traits { namespace detail {
-template <class T> struct need_promotion : boost::is_enum<T> {};
-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 {};
@@ -171596,8 +218597,6 @@
-template<> struct need_promotion<boost::ulong_long_type> : integral_constant<bool, (sizeof(boost::ulong_long_type) < sizeof(int))> {};
-template<> struct need_promotion<boost::long_long_type> : integral_constant<bool, (sizeof(boost::long_long_type) < sizeof(int))> {};
@@ -171608,18 +218607,15 @@
-template<> struct need_promotion<wchar_t> : true_type {};
-template<> struct need_promotion<bool> : true_type {};
-template<int Index, int IsConst, int IsVolatile> struct promote_from_index;
@@ -171628,10 +218624,6 @@
-template<> struct promote_from_index<1,0,0> { typedef int type; }; template<> struct promote_from_index<1,0,1> { typedef int volatile type; }; template<> struct promote_from_index<1,1,0> { typedef int const type; }; template<> struct promote_from_index<1,1,1> { typedef int const volatile type; };
-template<> struct promote_from_index<2,0,0> { typedef unsigned int type; }; template<> struct promote_from_index<2,0,1> { typedef unsigned int volatile type; }; template<> struct promote_from_index<2,1,0> { typedef unsigned int const type; }; template<> struct promote_from_index<2,1,1> { typedef unsigned int const volatile type; };
-template<> struct promote_from_index<3,0,0> { typedef long type; }; template<> struct promote_from_index<3,0,1> { typedef long volatile type; }; template<> struct promote_from_index<3,1,0> { typedef long const type; }; template<> struct promote_from_index<3,1,1> { typedef long const volatile type; };
-template<> struct promote_from_index<4,0,0> { typedef unsigned long type; }; template<> struct promote_from_index<4,0,1> { typedef unsigned long volatile type; }; template<> struct promote_from_index<4,1,0> { typedef unsigned long const type; }; template<> struct promote_from_index<4,1,1> { typedef unsigned long const volatile type; };
@@ -171640,8 +218632,6 @@
-template<> struct promote_from_index<5,0,0> { typedef boost::long_long_type type; }; template<> struct promote_from_index<5,0,1> { typedef boost::long_long_type volatile type; }; template<> struct promote_from_index<5,1,0> { typedef boost::long_long_type const type; }; template<> struct promote_from_index<5,1,1> { typedef boost::long_long_type const volatile type; };
-template<> struct promote_from_index<6,0,0> { typedef boost::ulong_long_type type; }; template<> struct promote_from_index<6,0,1> { typedef boost::ulong_long_type volatile type; }; template<> struct promote_from_index<6,1,0> { typedef boost::ulong_long_type const type; }; template<> struct promote_from_index<6,1,1> { typedef boost::ulong_long_type const volatile type; };
@@ -171669,14 +218659,8 @@
-char (&promoted_index_tester(int))[1];
-char (&promoted_index_tester(unsigned int))[2];
-char (&promoted_index_tester(long))[3];
-char (&promoted_index_tester(unsigned long))[4];
-char (&promoted_index_tester(boost::long_long_type))[5];
-char (&promoted_index_tester(boost::ulong_long_type))[6];
@@ -171687,38 +218671,10 @@
-template<class T>
-struct promoted_index
-{
- static T testee;
- static const int value = sizeof(promoted_index_tester(+testee));
-
-};
-template<class T>
-struct integral_promotion_impl
-{
- typedef typename promote_from_index<
- (boost::type_traits::detail::promoted_index<T>::value)
- , (boost::is_const<T>::value)
- , (boost::is_volatile<T>::value)
- >::type type;
-};
-template<class T>
-struct integral_promotion
- : boost::mpl::eval_if<
- need_promotion<typename remove_cv<T>::type>
- , integral_promotion_impl<T>
- , boost::mpl::identity<T>
- >
-{
-};
-} }
-template< typename T > struct integral_promotion { typedef typename boost::type_traits::detail::integral_promotion<T>::type type; };
-}
@@ -172559,22 +219515,10 @@
-namespace boost {
-namespace detail {
-template<class T>
-struct promote_impl
- : integral_promotion<
- typename floating_point_promotion<T>::type
- >
-{
-};
-}
-template< typename T > struct promote { typedef typename boost::detail::promote_impl<T>::type type; };
-}
@@ -172715,6 +219659,19 @@
+template<typename R
+ ,
+ typename A0 , typename A1 , typename A2 , typename A3 , typename A4
+>
+struct abstract_function<
+ R ( A0 , A1 , A2 , A3 , A4)
+ , 0
+> {
+
+ virtual R operator()( A0 , A1 , A2 , A3 , A4) = 0;
+};
+
+
@@ -172790,6 +219747,17 @@
+template<typename R
+ ,
+ typename A0 , typename A1 , typename A2 , typename A3 , typename A4
+>
+struct abstract_function<
+ R ( A0 , A1 , A2 , A3 , A4)
+ , 1
+> {
+
+ virtual R operator()( A0 , A1 , A2 , A3 , A4) = 0; virtual R operator()( A0 , A1 , A2 , A3) = 0;
+};
@@ -172867,6 +219835,17 @@
+template<typename R
+ ,
+ typename A0 , typename A1 , typename A2 , typename A3 , typename A4
+>
+struct abstract_function<
+ R ( A0 , A1 , A2 , A3 , A4)
+ , 2
+> {
+
+ virtual R operator()( A0 , A1 , A2 , A3 , A4) = 0; virtual R operator()( A0 , A1 , A2 , A3) = 0; virtual R operator()( A0 , A1 , A2) = 0;
+};
@@ -172944,6 +219923,17 @@
+template<typename R
+ ,
+ typename A0 , typename A1 , typename A2 , typename A3 , typename A4
+>
+struct abstract_function<
+ R ( A0 , A1 , A2 , A3 , A4)
+ , 3
+> {
+
+ virtual R operator()( A0 , A1 , A2 , A3 , A4) = 0; virtual R operator()( A0 , A1 , A2 , A3) = 0; virtual R operator()( A0 , A1 , A2) = 0; virtual R operator()( A0 , A1) = 0;
+};
@@ -173021,6 +220011,17 @@
+template<typename R
+ ,
+ typename A0 , typename A1 , typename A2 , typename A3 , typename A4
+>
+struct abstract_function<
+ R ( A0 , A1 , A2 , A3 , A4)
+ , 4
+> {
+
+ virtual R operator()( A0 , A1 , A2 , A3 , A4) = 0; virtual R operator()( A0 , A1 , A2 , A3) = 0; virtual R operator()( A0 , A1 , A2) = 0; virtual R operator()( A0 , A1) = 0; virtual R operator()( A0) = 0;
+};
@@ -173098,6 +220099,17 @@
+template<typename R
+ ,
+ typename A0 , typename A1 , typename A2 , typename A3 , typename A4
+>
+struct abstract_function<
+ R ( A0 , A1 , A2 , A3 , A4)
+ , 5
+> {
+
+ virtual R operator()( A0 , A1 , A2 , A3 , A4) = 0; virtual R operator()( A0 , A1 , A2 , A3) = 0; virtual R operator()( A0 , A1 , A2) = 0; virtual R operator()( A0 , A1) = 0; virtual R operator()( A0) = 0; virtual R operator()() = 0;
+};
@@ -173724,7 +220736,6 @@
-
@@ -175671,6 +222682,7 @@
+}}}
@@ -180051,6 +227063,7 @@
+
@@ -187631,16 +234644,31 @@
+namespace boost { namespace mpl { namespace aux {
+typedef char (&no_tag)[1];
+typedef char (&yes_tag)[2];
+template< bool C_ > struct yes_no_tag
+{
+ typedef no_tag type;
+};
+template<> struct yes_no_tag<true>
+{
+ typedef yes_tag type;
+};
+template< long n > struct weighted_tag
+{
+ typedef char (&type)[n];
+};
@@ -187649,6 +234677,7 @@
+}}}
@@ -188169,7 +235198,9 @@
+namespace boost { namespace mpl {
+struct failed {};
@@ -188180,21 +235211,49 @@
+template< bool C > struct assert { typedef void* type; };
+template<> struct assert<false> { typedef assert type; };
+template< bool C >
+int assertion_failed( typename assert<C>::type );
+template< bool C >
+struct assertion
+{
+ static int failed( assert<false> );
+};
+template<>
+struct assertion<true>
+{
+ static int failed( void* );
+};
+struct assert_
+{
+ template< typename T1, typename T2 = na, typename T3 = na, typename T4 = na > struct types {};
+ static assert_ const arg;
+ enum relations { equal = 1, not_equal, greater, greater_equal, less, less_equal };
+};
+bool operator==( failed, failed );
+bool operator!=( failed, failed );
+bool operator>( failed, failed );
+bool operator>=( failed, failed );
+bool operator<( failed, failed );
+bool operator<=( failed, failed );
+template< long x, long y, bool (*)(failed, failed) >
+struct assert_relation {};
@@ -188214,12 +235273,39 @@
+template< bool > struct assert_arg_pred_impl { typedef int type; };
+template<> struct assert_arg_pred_impl<true> { typedef void* type; };
+template< typename P > struct assert_arg_pred
+{
+ typedef typename P::type p_type;
+ typedef typename assert_arg_pred_impl< p_type::value >::type type;
+};
+template< typename P > struct assert_arg_pred_not
+{
+ typedef typename P::type p_type;
+ static const bool p = !p_type::value;
+ typedef typename assert_arg_pred_impl<p>::type type;
+};
+template< typename Pred >
+failed ************ (Pred::************
+ assert_arg( void (*)(Pred), typename assert_arg_pred<Pred>::type )
+ );
+template< typename Pred >
+failed ************ (boost::mpl::not_<Pred>::************
+ assert_not_arg( void (*)(Pred), typename assert_arg_pred_not<Pred>::type )
+ );
+template< typename Pred >
+assert<false>
+assert_arg( void (*)(Pred), typename assert_arg_pred_not<Pred>::type );
+template< typename Pred >
+assert<false>
+assert_not_arg( void (*)(Pred), typename assert_arg_pred<Pred>::type );
@@ -188262,6 +235348,7 @@
+}}
@@ -191610,6 +238697,7 @@
+namespace boost { namespace local {
@@ -191688,7 +238776,11 @@
+
+template<typename F, size_t defaults = 0>
+struct function {};
+}}
@@ -193294,6 +240386,7 @@
+
@@ -195080,10 +242173,13 @@
+extern "C" {
+ void __cdecl _wassert( const wchar_t * _Message, const wchar_t *_File, unsigned _Line);
+}
@@ -195109,6 +242205,7 @@
+
@@ -196752,11 +243849,41 @@
+namespace boost { namespace local {
+template<typename R
+
+
+>
+class function<
+ R ()
+ , 0
+> {
+ typedef aux::abstract_function<
+ R ()
+ , 0
+ > abstract_function_type;
+public:
+ function(): ptr_() {}
+
+ function(abstract_function_type& ref): ptr_(&ref) {}
+
+ function& operator=(abstract_function_type& ref) {
+ ptr_ = &ref;
+ return *this;
+ }
+
+
+
+ inline R operator()() { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)(); }
+private:
+ abstract_function_type* ptr_;
+};
+}}
@@ -198112,8 +245239,6 @@
-extern boost::scope_exit::aux::undeclared
- boost_local_auxXargs;
@@ -199000,11 +246125,41 @@
+namespace boost { namespace local {
+template<typename R
+ ,
+ typename A0
+>
+class function<
+ R ( A0)
+ , 0
+> {
+ typedef aux::abstract_function<
+ R ( A0)
+ , 0
+ > abstract_function_type;
+public:
+ function(): ptr_() {}
+
+ function(abstract_function_type& ref): ptr_(&ref) {}
+
+ function& operator=(abstract_function_type& ref) {
+ ptr_ = &ref;
+ return *this;
+ }
+
+
+
+ inline R operator()( A0 a0) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0); }
+private:
+ abstract_function_type* ptr_;
+};
+}}
@@ -199092,11 +246247,41 @@
+namespace boost { namespace local {
+template<typename R
+ ,
+ typename A0
+>
+class function<
+ R ( A0)
+ , 1
+> {
+ typedef aux::abstract_function<
+ R ( A0)
+ , 1
+ > abstract_function_type;
+public:
+ function(): ptr_() {}
+
+ function(abstract_function_type& ref): ptr_(&ref) {}
+
+ function& operator=(abstract_function_type& ref) {
+ ptr_ = &ref;
+ return *this;
+ }
+
+
+
+ inline R operator()( A0 a0) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0); } inline R operator()() { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)(); }
+private:
+ abstract_function_type* ptr_;
+};
+}}
@@ -200200,7 +247385,6 @@
-
@@ -201334,11 +248518,41 @@
+namespace boost { namespace local {
+template<typename R
+ ,
+ typename A0 , typename A1
+>
+class function<
+ R ( A0 , A1)
+ , 0
+> {
+ typedef aux::abstract_function<
+ R ( A0 , A1)
+ , 0
+ > abstract_function_type;
+public:
+ function(): ptr_() {}
+
+ function(abstract_function_type& ref): ptr_(&ref) {}
+
+ function& operator=(abstract_function_type& ref) {
+ ptr_ = &ref;
+ return *this;
+ }
+
+
+
+ inline R operator()( A0 a0 , A1 a1) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1); }
+private:
+ abstract_function_type* ptr_;
+};
+}}
@@ -201426,11 +248640,41 @@
+namespace boost { namespace local {
+template<typename R
+ ,
+ typename A0 , typename A1
+>
+class function<
+ R ( A0 , A1)
+ , 1
+> {
+ typedef aux::abstract_function<
+ R ( A0 , A1)
+ , 1
+ > abstract_function_type;
+public:
+ function(): ptr_() {}
+
+ function(abstract_function_type& ref): ptr_(&ref) {}
+
+ function& operator=(abstract_function_type& ref) {
+ ptr_ = &ref;
+ return *this;
+ }
+
+
+
+ inline R operator()( A0 a0 , A1 a1) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1); } inline R operator()( A0 a0) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0); }
+private:
+ abstract_function_type* ptr_;
+};
+}}
@@ -201518,11 +248762,41 @@
+namespace boost { namespace local {
+template<typename R
+ ,
+ typename A0 , typename A1
+>
+class function<
+ R ( A0 , A1)
+ , 2
+> {
+ typedef aux::abstract_function<
+ R ( A0 , A1)
+ , 2
+ > abstract_function_type;
+public:
+ function(): ptr_() {}
+
+ function(abstract_function_type& ref): ptr_(&ref) {}
+
+ function& operator=(abstract_function_type& ref) {
+ ptr_ = &ref;
+ return *this;
+ }
+
+
+
+ inline R operator()( A0 a0 , A1 a1) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1); } inline R operator()( A0 a0) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0); } inline R operator()() { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)(); }
+private:
+ abstract_function_type* ptr_;
+};
+}}
@@ -203754,11 +251028,41 @@
+namespace boost { namespace local {
+template<typename R
+ ,
+ typename A0 , typename A1 , typename A2
+>
+class function<
+ R ( A0 , A1 , A2)
+ , 0
+> {
+ typedef aux::abstract_function<
+ R ( A0 , A1 , A2)
+ , 0
+ > abstract_function_type;
+public:
+ function(): ptr_() {}
+
+ function(abstract_function_type& ref): ptr_(&ref) {}
+
+ function& operator=(abstract_function_type& ref) {
+ ptr_ = &ref;
+ return *this;
+ }
+
+
+
+ inline R operator()( A0 a0 , A1 a1 , A2 a2) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1 , a2); }
+private:
+ abstract_function_type* ptr_;
+};
+}}
@@ -203846,11 +251150,41 @@
+namespace boost { namespace local {
+template<typename R
+ ,
+ typename A0 , typename A1 , typename A2
+>
+class function<
+ R ( A0 , A1 , A2)
+ , 1
+> {
+ typedef aux::abstract_function<
+ R ( A0 , A1 , A2)
+ , 1
+ > abstract_function_type;
+public:
+ function(): ptr_() {}
+
+ function(abstract_function_type& ref): ptr_(&ref) {}
+
+ function& operator=(abstract_function_type& ref) {
+ ptr_ = &ref;
+ return *this;
+ }
+
+
+
+ inline R operator()( A0 a0 , A1 a1 , A2 a2) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1 , a2); } inline R operator()( A0 a0 , A1 a1) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1); }
+private:
+ abstract_function_type* ptr_;
+};
+}}
@@ -203938,11 +251272,41 @@
+namespace boost { namespace local {
+template<typename R
+ ,
+ typename A0 , typename A1 , typename A2
+>
+class function<
+ R ( A0 , A1 , A2)
+ , 2
+> {
+ typedef aux::abstract_function<
+ R ( A0 , A1 , A2)
+ , 2
+ > abstract_function_type;
+public:
+ function(): ptr_() {}
+
+ function(abstract_function_type& ref): ptr_(&ref) {}
+
+ function& operator=(abstract_function_type& ref) {
+ ptr_ = &ref;
+ return *this;
+ }
+
+
+
+ inline R operator()( A0 a0 , A1 a1 , A2 a2) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1 , a2); } inline R operator()( A0 a0 , A1 a1) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1); } inline R operator()( A0 a0) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0); }
+private:
+ abstract_function_type* ptr_;
+};
+}}
@@ -204030,11 +251394,41 @@
+namespace boost { namespace local {
+template<typename R
+ ,
+ typename A0 , typename A1 , typename A2
+>
+class function<
+ R ( A0 , A1 , A2)
+ , 3
+> {
+ typedef aux::abstract_function<
+ R ( A0 , A1 , A2)
+ , 3
+ > abstract_function_type;
+public:
+ function(): ptr_() {}
+
+ function(abstract_function_type& ref): ptr_(&ref) {}
+
+ function& operator=(abstract_function_type& ref) {
+ ptr_ = &ref;
+ return *this;
+ }
+
+
+
+ inline R operator()( A0 a0 , A1 a1 , A2 a2) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1 , a2); } inline R operator()( A0 a0 , A1 a1) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1); } inline R operator()( A0 a0) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0); } inline R operator()() { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)(); }
+private:
+ abstract_function_type* ptr_;
+};
+}}
@@ -206261,11 +253655,41 @@
+namespace boost { namespace local {
+template<typename R
+ ,
+ typename A0 , typename A1 , typename A2 , typename A3
+>
+class function<
+ R ( A0 , A1 , A2 , A3)
+ , 0
+> {
+ typedef aux::abstract_function<
+ R ( A0 , A1 , A2 , A3)
+ , 0
+ > abstract_function_type;
+public:
+ function(): ptr_() {}
+
+ function(abstract_function_type& ref): ptr_(&ref) {}
+
+ function& operator=(abstract_function_type& ref) {
+ ptr_ = &ref;
+ return *this;
+ }
+
+
+
+ inline R operator()( A0 a0 , A1 a1 , A2 a2 , A3 a3) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1 , a2 , a3); }
+private:
+ abstract_function_type* ptr_;
+};
+}}
@@ -206353,11 +253777,41 @@
+namespace boost { namespace local {
+template<typename R
+ ,
+ typename A0 , typename A1 , typename A2 , typename A3
+>
+class function<
+ R ( A0 , A1 , A2 , A3)
+ , 1
+> {
+ typedef aux::abstract_function<
+ R ( A0 , A1 , A2 , A3)
+ , 1
+ > abstract_function_type;
+public:
+ function(): ptr_() {}
+
+ function(abstract_function_type& ref): ptr_(&ref) {}
+
+ function& operator=(abstract_function_type& ref) {
+ ptr_ = &ref;
+ return *this;
+ }
+
+
+
+ inline R operator()( A0 a0 , A1 a1 , A2 a2 , A3 a3) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1 , a2 , a3); } inline R operator()( A0 a0 , A1 a1 , A2 a2) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1 , a2); }
+private:
+ abstract_function_type* ptr_;
+};
+}}
@@ -206445,11 +253899,41 @@
+namespace boost { namespace local {
+template<typename R
+ ,
+ typename A0 , typename A1 , typename A2 , typename A3
+>
+class function<
+ R ( A0 , A1 , A2 , A3)
+ , 2
+> {
+ typedef aux::abstract_function<
+ R ( A0 , A1 , A2 , A3)
+ , 2
+ > abstract_function_type;
+public:
+ function(): ptr_() {}
+
+ function(abstract_function_type& ref): ptr_(&ref) {}
+
+ function& operator=(abstract_function_type& ref) {
+ ptr_ = &ref;
+ return *this;
+ }
+
+
+
+ inline R operator()( A0 a0 , A1 a1 , A2 a2 , A3 a3) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1 , a2 , a3); } inline R operator()( A0 a0 , A1 a1 , A2 a2) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1 , a2); } inline R operator()( A0 a0 , A1 a1) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1); }
+private:
+ abstract_function_type* ptr_;
+};
+}}
@@ -206537,11 +254021,41 @@
+namespace boost { namespace local {
+template<typename R
+ ,
+ typename A0 , typename A1 , typename A2 , typename A3
+>
+class function<
+ R ( A0 , A1 , A2 , A3)
+ , 3
+> {
+ typedef aux::abstract_function<
+ R ( A0 , A1 , A2 , A3)
+ , 3
+ > abstract_function_type;
+public:
+ function(): ptr_() {}
+
+ function(abstract_function_type& ref): ptr_(&ref) {}
+
+ function& operator=(abstract_function_type& ref) {
+ ptr_ = &ref;
+ return *this;
+ }
+
+
+
+ inline R operator()( A0 a0 , A1 a1 , A2 a2 , A3 a3) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1 , a2 , a3); } inline R operator()( A0 a0 , A1 a1 , A2 a2) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1 , a2); } inline R operator()( A0 a0 , A1 a1) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1); } inline R operator()( A0 a0) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0); }
+private:
+ abstract_function_type* ptr_;
+};
+}}
@@ -206629,11 +254143,41 @@
+namespace boost { namespace local {
+template<typename R
+ ,
+ typename A0 , typename A1 , typename A2 , typename A3
+>
+class function<
+ R ( A0 , A1 , A2 , A3)
+ , 4
+> {
+ typedef aux::abstract_function<
+ R ( A0 , A1 , A2 , A3)
+ , 4
+ > abstract_function_type;
+public:
+ function(): ptr_() {}
+
+ function(abstract_function_type& ref): ptr_(&ref) {}
+
+ function& operator=(abstract_function_type& ref) {
+ ptr_ = &ref;
+ return *this;
+ }
+
+
+
+ inline R operator()( A0 a0 , A1 a1 , A2 a2 , A3 a3) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1 , a2 , a3); } inline R operator()( A0 a0 , A1 a1 , A2 a2) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1 , a2); } inline R operator()( A0 a0 , A1 a1) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1); } inline R operator()( A0 a0) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0); } inline R operator()() { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/lo
cal/aux_/function.hpp", 106), 0) ); return (*ptr_)(); }
+private:
+ abstract_function_type* ptr_;
+};
+}}
@@ -207550,31 +255094,16 @@
-namespace boost { namespace mpl { namespace aux {
-typedef char (&no_tag)[1];
-typedef char (&yes_tag)[2];
-template< bool C_ > struct yes_no_tag
-{
- typedef no_tag type;
-};
-template<> struct yes_no_tag<true>
-{
- typedef yes_tag type;
-};
-template< long n > struct weighted_tag
-{
- typedef char (&type)[n];
-};
@@ -207583,7 +255112,6 @@
-}}}
@@ -208104,9 +255632,7 @@
-namespace boost { namespace mpl {
-struct failed {};
@@ -208117,49 +255643,21 @@
-template< bool C > struct assert { typedef void* type; };
-template<> struct assert<false> { typedef assert type; };
-template< bool C >
-int assertion_failed( typename assert<C>::type );
-template< bool C >
-struct assertion
-{
- static int failed( assert<false> );
-};
-template<>
-struct assertion<true>
-{
- static int failed( void* );
-};
-struct assert_
-{
- template< typename T1, typename T2 = na, typename T3 = na, typename T4 = na > struct types {};
- static assert_ const arg;
- enum relations { equal = 1, not_equal, greater, greater_equal, less, less_equal };
-};
-bool operator==( failed, failed );
-bool operator!=( failed, failed );
-bool operator>( failed, failed );
-bool operator>=( failed, failed );
-bool operator<( failed, failed );
-bool operator<=( failed, failed );
-template< long x, long y, bool (*)(failed, failed) >
-struct assert_relation {};
@@ -208179,39 +255677,12 @@
-template< bool > struct assert_arg_pred_impl { typedef int type; };
-template<> struct assert_arg_pred_impl<true> { typedef void* type; };
-template< typename P > struct assert_arg_pred
-{
- typedef typename P::type p_type;
- typedef typename assert_arg_pred_impl< p_type::value >::type type;
-};
-template< typename P > struct assert_arg_pred_not
-{
- typedef typename P::type p_type;
- static const bool p = !p_type::value;
- typedef typename assert_arg_pred_impl<p>::type type;
-};
-template< typename Pred >
-failed ************ (Pred::************
- assert_arg( void (*)(Pred), typename assert_arg_pred<Pred>::type )
- );
-template< typename Pred >
-failed ************ (boost::mpl::not_<Pred>::************
- assert_not_arg( void (*)(Pred), typename assert_arg_pred_not<Pred>::type )
- );
-template< typename Pred >
-assert<false>
-assert_arg( void (*)(Pred), typename assert_arg_pred_not<Pred>::type );
-template< typename Pred >
-assert<false>
-assert_not_arg( void (*)(Pred), typename assert_arg_pred<Pred>::type );
@@ -208254,7 +255725,6 @@
-}}
@@ -208929,11 +256399,41 @@
+namespace boost { namespace local {
+template<typename R
+ ,
+ typename A0 , typename A1 , typename A2 , typename A3 , typename A4
+>
+class function<
+ R ( A0 , A1 , A2 , A3 , A4)
+ , 0
+> {
+ typedef aux::abstract_function<
+ R ( A0 , A1 , A2 , A3 , A4)
+ , 0
+ > abstract_function_type;
+public:
+ function(): ptr_() {}
+
+ function(abstract_function_type& ref): ptr_(&ref) {}
+
+ function& operator=(abstract_function_type& ref) {
+ ptr_ = &ref;
+ return *this;
+ }
+
+
+
+ inline R operator()( A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1 , a2 , a3 , a4); }
+private:
+ abstract_function_type* ptr_;
+};
+}}
@@ -209021,11 +256521,41 @@
+namespace boost { namespace local {
+template<typename R
+ ,
+ typename A0 , typename A1 , typename A2 , typename A3 , typename A4
+>
+class function<
+ R ( A0 , A1 , A2 , A3 , A4)
+ , 1
+> {
+ typedef aux::abstract_function<
+ R ( A0 , A1 , A2 , A3 , A4)
+ , 1
+ > abstract_function_type;
+public:
+ function(): ptr_() {}
+
+ function(abstract_function_type& ref): ptr_(&ref) {}
+
+ function& operator=(abstract_function_type& ref) {
+ ptr_ = &ref;
+ return *this;
+ }
+
+
+
+ inline R operator()( A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1 , a2 , a3 , a4); } inline R operator()( A0 a0 , A1 a1 , A2 a2 , A3 a3) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1 , a2 , a3); }
+private:
+ abstract_function_type* ptr_;
+};
+}}
@@ -209113,11 +256643,41 @@
+namespace boost { namespace local {
+template<typename R
+ ,
+ typename A0 , typename A1 , typename A2 , typename A3 , typename A4
+>
+class function<
+ R ( A0 , A1 , A2 , A3 , A4)
+ , 2
+> {
+ typedef aux::abstract_function<
+ R ( A0 , A1 , A2 , A3 , A4)
+ , 2
+ > abstract_function_type;
+public:
+ function(): ptr_() {}
+
+ function(abstract_function_type& ref): ptr_(&ref) {}
+
+ function& operator=(abstract_function_type& ref) {
+ ptr_ = &ref;
+ return *this;
+ }
+
+
+
+ inline R operator()( A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1 , a2 , a3 , a4); } inline R operator()( A0 a0 , A1 a1 , A2 a2 , A3 a3) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1 , a2 , a3); } inline R operator()( A0 a0 , A1 a1 , A2 a2) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1 , a2); }
+private:
+ abstract_function_type* ptr_;
+};
+}}
@@ -209205,11 +256765,41 @@
+namespace boost { namespace local {
+template<typename R
+ ,
+ typename A0 , typename A1 , typename A2 , typename A3 , typename A4
+>
+class function<
+ R ( A0 , A1 , A2 , A3 , A4)
+ , 3
+> {
+ typedef aux::abstract_function<
+ R ( A0 , A1 , A2 , A3 , A4)
+ , 3
+ > abstract_function_type;
+public:
+ function(): ptr_() {}
+
+ function(abstract_function_type& ref): ptr_(&ref) {}
+
+ function& operator=(abstract_function_type& ref) {
+ ptr_ = &ref;
+ return *this;
+ }
+
+
+
+ inline R operator()( A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1 , a2 , a3 , a4); } inline R operator()( A0 a0 , A1 a1 , A2 a2 , A3 a3) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1 , a2 , a3); } inline R operator()( A0 a0 , A1 a1 , A2 a2) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1 , a2); } inline R operator()( A0 a0 , A1 a1) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1); }
+private:
+ abstract_function_type* ptr_;
+};
+}}
@@ -209297,11 +256887,41 @@
+namespace boost { namespace local {
+template<typename R
+ ,
+ typename A0 , typename A1 , typename A2 , typename A3 , typename A4
+>
+class function<
+ R ( A0 , A1 , A2 , A3 , A4)
+ , 4
+> {
+ typedef aux::abstract_function<
+ R ( A0 , A1 , A2 , A3 , A4)
+ , 4
+ > abstract_function_type;
+public:
+ function(): ptr_() {}
+
+ function(abstract_function_type& ref): ptr_(&ref) {}
+
+ function& operator=(abstract_function_type& ref) {
+ ptr_ = &ref;
+ return *this;
+ }
+
+
+
+ inline R operator()( A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1 , a2 , a3 , a4); } inline R operator()( A0 a0 , A1 a1 , A2 a2 , A3 a3) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1 , a2 , a3); } inline R operator()( A0 a0 , A1 a1 , A2 a2) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1 , a2); } inline R operator()( A0 a0 , A1 a1) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1); } inline R operator()( A0 a0) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox
\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0); }
+private:
+ abstract_function_type* ptr_;
+};
+}}
@@ -209389,11 +257009,41 @@
+namespace boost { namespace local {
+template<typename R
+ ,
+ typename A0 , typename A1 , typename A2 , typename A3 , typename A4
+>
+class function<
+ R ( A0 , A1 , A2 , A3 , A4)
+ , 5
+> {
+ typedef aux::abstract_function<
+ R ( A0 , A1 , A2 , A3 , A4)
+ , 5
+ > abstract_function_type;
+public:
+ function(): ptr_() {}
+
+ function(abstract_function_type& ref): ptr_(&ref) {}
+
+ function& operator=(abstract_function_type& ref) {
+ ptr_ = &ref;
+ return *this;
+ }
+
+
+
+ inline R operator()( A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1 , a2 , a3 , a4); } inline R operator()( A0 a0 , A1 a1 , A2 a2 , A3 a3) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1 , a2 , a3); } inline R operator()( A0 a0 , A1 a1 , A2 a2) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1 , a2); } inline R operator()( A0 a0 , A1 a1) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0 , a1); } inline R operator()( A0 a0) { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox
\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)( a0); } inline R operator()() { (void)( (!!(ptr_)) || (_wassert(L"ptr_", L"e:\\sandbox\\boost-sandbox\\local\\libs\\local\\params_name\\boost/local/aux_/function.hpp", 106), 0) ); return (*ptr_)(); }
+private:
+ abstract_function_type* ptr_;
+};
+}}
@@ -212063,23 +259713,23 @@
-char& ERROR_missing_result_type_before_the_local_function_parameter_macro_id7(); typedef boost::function_tratis::result_type<boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(ERROR_missing_result_type_before_the_local_function_parameter_macro_id7))>::type>::type boost_local_auxXresult_type7; enum { boost_se_thistype_index_7 = sizeof(*boost::scope_exit::msvc_typeof_this::encode_start(this)) }; typedef boost::scope_exit::msvc_typeof_this::msvc_typeid_wrapper<boost_se_thistype_index_7>::type se_this_type7; typedef void (*boost_se_tag_0_7)(int this_ ); typedef void (*boost_se_tag_1_7)(int c ); typedef void (*boost_se_tag_2_7)(int & d ); typedef void (*boost_se_tag_3_7)(int a ); typedef void (*boost_se_tag_4_7)(int & b ); typedef boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(this, (boost_se_tag_0_7)0))))>::type boost_se_wrapped_t_0_7; typedef boost_se_wrapped_t_0_7::type boost_se_capture_t_0_7; typede
f boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(c, (boost_se_tag_1_7)0))))>::type boost_se_wrapped_t_1_7; typedef boost_se_wrapped_t_1_7::type boost_se_capture_t_1_7; typedef boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(& d, (boost_se_tag_2_7)0))))>::type boost_se_wrapped_t_2_7; typedef boost_se_wrapped_t_2_7::type boost_se_capture_t_2_7; typedef boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(a, (boost_se_tag_3_7)0))))>::type boost_se_wrapped_t_3_7; typedef boost_se_wrapped_t_3_7::type boost_se_capture_t_3_7; typedef boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(& b, (boost_se_tag_4_7)0))))>::type boost_se_wrapped_t_4_7; typedef boost_se_wrapped_t_4_7::type boost
_se_capture_t_4_7; struct boost_se_params_t_7 { se_this_type7 se_this; typedef boost_se_capture_t_0_7 boost_se_param_t_0_7; typedef boost_se_capture_t_1_7 boost_se_param_t_1_7; typedef boost_se_capture_t_2_7 boost_se_param_t_2_7; typedef boost_se_capture_t_3_7 boost_se_param_t_3_7; typedef boost_se_capture_t_4_7 boost_se_param_t_4_7; boost::scope_exit::aux::member< boost_se_param_t_0_7, boost_se_tag_0_7 > boost_se_param_0_7; boost::scope_exit::aux::member< boost_se_param_t_1_7, boost_se_tag_1_7 > boost_se_param_1_7; boost::scope_exit::aux::member< boost_se_param_t_2_7, boost_se_tag_2_7 > boost_se_param_2_7; boost::scope_exit::aux::member< boost_se_param_t_3_7, boost_se_tag_3_7 > boost_se_param_3_7; boost::scope_exit::aux::member< boost_se_param_t_4_7, boost_se_tag_4_7 > boost_se_param_4_7; } boost_local_auxXparams_7 = { this , boost::scope_exit::aux::deref(this, (boost_se_tag_0_7)0) , boost::scope_exit::aux::deref(c, (boost_se_tag_1_7)0) , boost::scope_exit::aux::deref(& d, (boost_se_tag_2_7)0) , boos
t::scope_exit::aux::deref(a, (boost_se_tag_3_7)0) , boost::scope_exit::aux::deref(& b, (boost_se_tag_4_7)0) }; boost::scope_exit::aux::declared< boost::scope_exit::aux::resolve< sizeof(boost_local_auxXargs) >::cmp1<0>::cmp2 > boost_local_auxXargs; boost_local_auxXargs.value = &boost_local_auxXparams_7;
-char& ERROR_missing_result_type_before_the_local_function_parameter_macro_id9(); typedef boost::function_tratis::result_type<boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(ERROR_missing_result_type_before_the_local_function_parameter_macro_id9))>::type>::type boost_local_auxXresult_type9; enum { boost_se_thistype_index_9 = sizeof(*boost::scope_exit::msvc_typeof_this::encode_start(this)) }; typedef boost::scope_exit::msvc_typeof_this::msvc_typeid_wrapper<boost_se_thistype_index_9>::type se_this_type9; typedef void (*boost_se_tag_0_9)(int this_ ); typedef void (*boost_se_tag_1_9)(int c ); typedef void (*boost_se_tag_2_9)(int & d ); typedef void (*boost_se_tag_3_9)(int a ); typedef void (*boost_se_tag_4_9)(int & b ); typedef boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(this, (boost_se_tag_0_9)0))))>::type boost_se_wrapped_t_0_9; typedef boost_se_wrapped_t_0_9::type boost_se_capture_t_0_9; typede
f boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(c, (boost_se_tag_1_9)0))))>::type boost_se_wrapped_t_1_9; typedef boost_se_wrapped_t_1_9::type boost_se_capture_t_1_9; typedef boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(& d, (boost_se_tag_2_9)0))))>::type boost_se_wrapped_t_2_9; typedef boost_se_wrapped_t_2_9::type boost_se_capture_t_2_9; typedef boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(a, (boost_se_tag_3_9)0))))>::type boost_se_wrapped_t_3_9; typedef boost_se_wrapped_t_3_9::type boost_se_capture_t_3_9; typedef boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(& b, (boost_se_tag_4_9)0))))>::type boost_se_wrapped_t_4_9; typedef boost_se_wrapped_t_4_9::type boost
_se_capture_t_4_9; struct boost_se_params_t_9 { se_this_type9 se_this; typedef boost_se_capture_t_0_9 boost_se_param_t_0_9; typedef boost_se_capture_t_1_9 boost_se_param_t_1_9; typedef boost_se_capture_t_2_9 boost_se_param_t_2_9; typedef boost_se_capture_t_3_9 boost_se_param_t_3_9; typedef boost_se_capture_t_4_9 boost_se_param_t_4_9; boost::scope_exit::aux::member< boost_se_param_t_0_9, boost_se_tag_0_9 > boost_se_param_0_9; boost::scope_exit::aux::member< boost_se_param_t_1_9, boost_se_tag_1_9 > boost_se_param_1_9; boost::scope_exit::aux::member< boost_se_param_t_2_9, boost_se_tag_2_9 > boost_se_param_2_9; boost::scope_exit::aux::member< boost_se_param_t_3_9, boost_se_tag_3_9 > boost_se_param_3_9; boost::scope_exit::aux::member< boost_se_param_t_4_9, boost_se_tag_4_9 > boost_se_param_4_9; } boost_local_auxXparams_9 = { this , boost::scope_exit::aux::deref(this, (boost_se_tag_0_9)0) , boost::scope_exit::aux::deref(c, (boost_se_tag_1_9)0) , boost::scope_exit::aux::deref(& d, (boost_se_tag_2_9)0) , boos
t::scope_exit::aux::deref(a, (boost_se_tag_3_9)0) , boost::scope_exit::aux::deref(& b, (boost_se_tag_4_9)0) }; boost::scope_exit::aux::declared< boost::scope_exit::aux::resolve< sizeof(boost_local_auxXargs) >::cmp1<0>::cmp2 > boost_local_auxXargs; boost_local_auxXargs.value = &boost_local_auxXparams_9;
+char& ERROR_missing_result_type_before_the_local_function_parameter_macro_id9(); typedef boost::function_tratis::result_type<boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(ERROR_missing_result_type_before_the_local_function_parameter_macro_id9))>::type>::type boost_local_auxXresult_type9; enum { boost_se_thistype_index_9 = sizeof(*boost::scope_exit::msvc_typeof_this::encode_start(this)) }; typedef boost::scope_exit::msvc_typeof_this::msvc_typeid_wrapper<boost_se_thistype_index_9>::type se_this_type9; typedef void (*boost_se_tag_0_9)(int this_ ); typedef void (*boost_se_tag_1_9)(int c ); typedef void (*boost_se_tag_2_9)(int & d ); typedef void (*boost_se_tag_3_9)(int a ); typedef void (*boost_se_tag_4_9)(int & b ); typedef boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(this, (boost_se_tag_0_9)0))))>::type boost_se_wrapped_t_0_9; typedef boost_se_wrapped_t_0_9::type boost_se_capture_t_0_9; typede
f boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(c, (boost_se_tag_1_9)0))))>::type boost_se_wrapped_t_1_9; typedef boost_se_wrapped_t_1_9::type boost_se_capture_t_1_9; typedef boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(& d, (boost_se_tag_2_9)0))))>::type boost_se_wrapped_t_2_9; typedef boost_se_wrapped_t_2_9::type boost_se_capture_t_2_9; typedef boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(a, (boost_se_tag_3_9)0))))>::type boost_se_wrapped_t_3_9; typedef boost_se_wrapped_t_3_9::type boost_se_capture_t_3_9; typedef boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(& b, (boost_se_tag_4_9)0))))>::type boost_se_wrapped_t_4_9; typedef boost_se_wrapped_t_4_9::type boost
_se_capture_t_4_9; struct boost_se_params_t_9 { se_this_type9 se_this; typedef boost_se_capture_t_0_9 boost_se_param_t_0_9; typedef boost_se_capture_t_1_9 boost_se_param_t_1_9; typedef boost_se_capture_t_2_9 boost_se_param_t_2_9; typedef boost_se_capture_t_3_9 boost_se_param_t_3_9; typedef boost_se_capture_t_4_9 boost_se_param_t_4_9; boost::scope_exit::aux::member< boost_se_param_t_0_9, boost_se_tag_0_9 > boost_se_param_0_9; boost::scope_exit::aux::member< boost_se_param_t_1_9, boost_se_tag_1_9 > boost_se_param_1_9; boost::scope_exit::aux::member< boost_se_param_t_2_9, boost_se_tag_2_9 > boost_se_param_2_9; boost::scope_exit::aux::member< boost_se_param_t_3_9, boost_se_tag_3_9 > boost_se_param_3_9; boost::scope_exit::aux::member< boost_se_param_t_4_9, boost_se_tag_4_9 > boost_se_param_4_9; } boost_local_auxXparams9 = { this , boost::scope_exit::aux::deref(this, (boost_se_tag_0_9)0) , boost::scope_exit::aux::deref(c, (boost_se_tag_1_9)0) , boost::scope_exit::aux::deref(& d, (boost_se_tag_2_9)0) , boost
::scope_exit::aux::deref(a, (boost_se_tag_3_9)0) , boost::scope_exit::aux::deref(& b, (boost_se_tag_4_9)0) }; boost::scope_exit::aux::declared< boost::scope_exit::aux::resolve< sizeof(boost_local_auxXargs) >::cmp1<0>::cmp2 > boost_local_auxXargs; boost_local_auxXargs.value = &boost_local_auxXparams9; class boost_local_auxXfunctor9 : public ::boost::local::aux::abstract_function< boost_local_auxXresult_type9 ( int x , double y ), 1> { typedef boost_local_auxXresult_type9 ( int x , double y ) boost_local_auxXfunction_type; public: explicit boost_local_auxXfunctor9(void* binds) : boost_local_auxXbinds(static_cast< boost_se_params_t_9*>(binds)) { boost_local_auxXinit_recursion(); } boost_local_auxXresult_type9 operator()( ::boost::function_traits< boost_local_auxXfunction_type>::arg1_type arg1 , ::boost::function_traits< boost_local_auxXfunction_type>::arg2_type arg2 ) { return boost_local_auxXbody( boost_local_auxXbinds-> boost_se_param_0_9.value , boost_local_auxXbinds-> boost_se_param_1_9.valu
e , boost_local_auxXbinds-> boost_se_param_2_9.value , boost_local_auxXbinds-> boost_se_param_3_9.value , boost_local_auxXbinds-> se_this , arg1 , arg2 ); } boost_local_auxXresult_type9 operator()( ::boost::function_traits< boost_local_auxXfunction_type>::arg1_type arg1 ) { return boost_local_auxXbody( boost_local_auxXbinds-> boost_se_param_0_9.value , boost_local_auxXbinds-> boost_se_param_1_9.value , boost_local_auxXbinds-> boost_se_param_2_9.value , boost_local_auxXbinds-> boost_se_param_3_9.value , boost_local_auxXbinds-> se_this , arg1 ); } private: typedef ::boost::local::function<boost_local_auxXfunction_type, 1> boost_local_auxXfunctor_type; typedef ::boost::add_const< boost_se_params_t_9:: boost_se_param_t_0_9 >::type cXboost_local_auxXtypeof_type ; typedef ::boost::add_const< boost_se_params_t_9:: boost_se_param_t_1_9 >::type & dXboost_local_auxXtypeof_type ; typedef boost_se_params_t_9:: boost_se_param_t_2_9 aXboost_local_auxXtypeof_type ; typedef boost_se_params_t_9:: boost_
se_param_t_3_9 & bXboost_local_auxXtypeof_type ; typeof ::contract::detail::add_pointed_const< se_this_type9 >::type thisXboost_local_auxXtypeof_type ; boost_se_params_t_9* boost_local_auxXbinds; boost_local_auxXresult_type9 boost_local_auxXbody( ::boost::add_const< boost_se_params_t_9:: boost_se_param_t_0_9 >::type c , ::boost::add_const< boost_se_params_t_9:: boost_se_param_t_1_9 >::type & d , boost_se_params_t_9:: boost_se_param_t_2_9 a , boost_se_params_t_9:: boost_se_param_t_3_9 & b , ::contract::detail::add_pointed_const< se_this_type9 >::type this_ , int x , double y = 1.23 )
+char& ERROR_missing_result_type_before_the_local_function_parameter_macro_id11(); typedef boost::function_tratis::result_type<boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(ERROR_missing_result_type_before_the_local_function_parameter_macro_id11))>::type>::type boost_local_auxXresult_type11; enum { boost_se_thistype_index_11 = sizeof(*boost::scope_exit::msvc_typeof_this::encode_start(this)) }; typedef boost::scope_exit::msvc_typeof_this::msvc_typeid_wrapper<boost_se_thistype_index_11>::type se_this_type11; typedef void (*boost_se_tag_0_11)(int this_ ); typedef void (*boost_se_tag_1_11)(int c ); typedef void (*boost_se_tag_2_11)(int & d ); typedef void (*boost_se_tag_3_11)(int a ); typedef void (*boost_se_tag_4_11)(int & b ); typedef boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(this, (boost_se_tag_0_11)0))))>::type boost_se_wrapped_t_0_11; typedef boost_se_wrapped_t_0_11::type boost_se_capture
_t_0_11; typedef boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(c, (boost_se_tag_1_11)0))))>::type boost_se_wrapped_t_1_11; typedef boost_se_wrapped_t_1_11::type boost_se_capture_t_1_11; typedef boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(& d, (boost_se_tag_2_11)0))))>::type boost_se_wrapped_t_2_11; typedef boost_se_wrapped_t_2_11::type boost_se_capture_t_2_11; typedef boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(a, (boost_se_tag_3_11)0))))>::type boost_se_wrapped_t_3_11; typedef boost_se_wrapped_t_3_11::type boost_se_capture_t_3_11; typedef boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(& b, (boost_se_tag_4_11)0))))>::type boost_se_wrapped_t_4_11; typedef boost
_se_wrapped_t_4_11::type boost_se_capture_t_4_11; struct boost_se_params_t_11 { se_this_type11 se_this; typedef boost_se_capture_t_0_11 boost_se_param_t_0_11; typedef boost_se_capture_t_1_11 boost_se_param_t_1_11; typedef boost_se_capture_t_2_11 boost_se_param_t_2_11; typedef boost_se_capture_t_3_11 boost_se_param_t_3_11; typedef boost_se_capture_t_4_11 boost_se_param_t_4_11; boost::scope_exit::aux::member< boost_se_param_t_0_11, boost_se_tag_0_11 > boost_se_param_0_11; boost::scope_exit::aux::member< boost_se_param_t_1_11, boost_se_tag_1_11 > boost_se_param_1_11; boost::scope_exit::aux::member< boost_se_param_t_2_11, boost_se_tag_2_11 > boost_se_param_2_11; boost::scope_exit::aux::member< boost_se_param_t_3_11, boost_se_tag_3_11 > boost_se_param_3_11; boost::scope_exit::aux::member< boost_se_param_t_4_11, boost_se_tag_4_11 > boost_se_param_4_11; } boost_local_auxXparams11 = { this , boost::scope_exit::aux::deref(this, (boost_se_tag_0_11)0) , boost::scope_exit::aux::deref(c, (boost_se_tag_1_11)0) , bo
ost::scope_exit::aux::deref(& d, (boost_se_tag_2_11)0) , boost::scope_exit::aux::deref(a, (boost_se_tag_3_11)0) , boost::scope_exit::aux::deref(& b, (boost_se_tag_4_11)0) }; boost::scope_exit::aux::declared< boost::scope_exit::aux::resolve< sizeof(boost_local_auxXargs) >::cmp1<0>::cmp2 > boost_local_auxXargs; boost_local_auxXargs.value = &boost_local_auxXparams11; class boost_local_auxXfunctor11 : public ::boost::local::aux::abstract_function< boost_local_auxXresult_type11 ( int x , double y ), 1> { typedef boost_local_auxXresult_type11 ( int x , double y ) boost_local_auxXfunction_type; public: explicit boost_local_auxXfunctor11(void* binds) : boost_local_auxXbinds(static_cast< boost_se_params_t_11*>(binds)) { boost_local_auxXinit_recursion(); } boost_local_auxXresult_type11 operator()( ::boost::function_traits< boost_local_auxXfunction_type>::arg1_type arg1 , ::boost::function_traits< boost_local_auxXfunction_type>::arg2_type arg2 ) { return boost_local_auxXbody( boost_local_auxXbinds-> boo
st_se_param_0_11.value , boost_local_auxXbinds-> boost_se_param_1_11.value , boost_local_auxXbinds-> boost_se_param_2_11.value , boost_local_auxXbinds-> boost_se_param_3_11.value , boost_local_auxXbinds-> se_this , arg1 , arg2 ); } boost_local_auxXresult_type11 operator()( ::boost::function_traits< boost_local_auxXfunction_type>::arg1_type arg1 ) { return boost_local_auxXbody( boost_local_auxXbinds-> boost_se_param_0_11.value , boost_local_auxXbinds-> boost_se_param_1_11.value , boost_local_auxXbinds-> boost_se_param_2_11.value , boost_local_auxXbinds-> boost_se_param_3_11.value , boost_local_auxXbinds-> se_this , arg1 ); } private: typedef ::boost::local::function<boost_local_auxXfunction_type, 1> boost_local_auxXfunctor_type; typedef ::boost::add_const< boost_se_params_t_11:: boost_se_param_t_0_11 >::type cXboost_local_auxXtypeof_type ; typedef ::boost::add_const< boost_se_params_t_11:: boost_se_param_t_1_11 >::type & dXboost_local_auxXtypeof_type ; typedef boost_se_params_t_11:: boos
t_se_param_t_2_11 aXboost_local_auxXtypeof_type ; typedef boost_se_params_t_11:: boost_se_param_t_3_11 & bXboost_local_auxXtypeof_type ; typeof ::contract::detail::add_pointed_const< se_this_type11 >::type thisXboost_local_auxXtypeof_type ; boost_se_params_t_11* boost_local_auxXbinds; boost_local_auxXresult_type11 boost_local_auxXbody( ::boost::add_const< boost_se_params_t_11:: boost_se_param_t_0_11 >::type c , ::boost::add_const< boost_se_params_t_11:: boost_se_param_t_1_11 >::type & d , boost_se_params_t_11:: boost_se_param_t_2_11 a , boost_se_params_t_11:: boost_se_param_t_3_11 & b , ::contract::detail::add_pointed_const< se_this_type11 >::type this_ , int x , double y = 1.23 )
-char& ERROR_missing_result_type_before_the_local_function_parameter_macro_id13(); typedef boost::function_tratis::result_type<boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(ERROR_missing_result_type_before_the_local_function_parameter_macro_id13))>::type>::type boost_local_auxXresult_type13; boost::scope_exit::aux::declared< boost::scope_exit::aux::resolve< sizeof(boost_local_auxXargs) >::cmp1<0>::cmp2 > boost_local_auxXargs;
-char& ERROR_missing_result_type_before_the_local_function_parameter_macro_id14(); typedef boost::function_tratis::result_type<boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(ERROR_missing_result_type_before_the_local_function_parameter_macro_id14))>::type>::type boost_local_auxXresult_type14; boost::scope_exit::aux::declared< boost::scope_exit::aux::resolve< sizeof(boost_local_auxXargs) >::cmp1<0>::cmp2 > boost_local_auxXargs;
+char& ERROR_missing_result_type_before_the_local_function_parameter_macro_id15(); typedef boost::function_tratis::result_type<boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(ERROR_missing_result_type_before_the_local_function_parameter_macro_id15))>::type>::type boost_local_auxXresult_type15; boost::scope_exit::aux::declared< boost::scope_exit::aux::resolve< sizeof(boost_local_auxXargs) >::cmp1<0>::cmp2 > boost_local_auxXargs; class boost_local_auxXfunctor15 : public ::boost::local::aux::abstract_function< boost_local_auxXresult_type15 ( ), 0 > { typedef boost_local_auxXresult_type15 ( ) boost_local_auxXfunction_type; public: explicit boost_local_auxXfunctor15(void* binds) { boost_local_auxXinit_recursion(); } boost_local_auxXresult_type15 operator()( ) { return boost_local_auxXbody( ); } private: typedef ::boost::local::function<boost_local_auxXfunction_type, 0 > boost_local_auxXfunctor_type; boost_local_auxXresult_type15 boost_local_auxXbody( )
+char& ERROR_missing_result_type_before_the_local_function_parameter_macro_id16(); typedef boost::function_tratis::result_type<boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(ERROR_missing_result_type_before_the_local_function_parameter_macro_id16))>::type>::type boost_local_auxXresult_type16; boost::scope_exit::aux::declared< boost::scope_exit::aux::resolve< sizeof(boost_local_auxXargs) >::cmp1<0>::cmp2 > boost_local_auxXargs; class boost_local_auxXfunctor16 : public ::boost::local::aux::abstract_function< boost_local_auxXresult_type16 ( ), 0 > { typedef boost_local_auxXresult_type16 ( ) boost_local_auxXfunction_type; public: explicit boost_local_auxXfunctor16(void* binds) { boost_local_auxXinit_recursion(); } boost_local_auxXresult_type16 operator()( ) { return boost_local_auxXbody( ); } private: typedef ::boost::local::function<boost_local_auxXfunction_type, 0 > boost_local_auxXfunctor_type; boost_local_auxXresult_type16 boost_local_auxXbody( )
-char& ERROR_missing_result_type_before_the_local_function_parameter_macro_id21(); typedef boost::function_tratis::result_type<boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(ERROR_missing_result_type_before_the_local_function_parameter_macro_id21))>::type>::type boost_local_auxXresult_type21; ; struct ERROR_default_value_cannot_be_specified_as_the_first_element ; typedef struct ERROR_default_value_cannot_be_specified_as_the_first_element9 : boost::mpl::assert_ { static boost::mpl::failed ************ (ERROR_default_value_cannot_be_specified_as_the_first_element ::************ assert_arg()) () { return 0; } } mpl_assert_arg9; static const std::size_t mpl_assertion_in_line_9 = sizeof( boost::mpl::assertion_failed<(false)>( mpl_assert_arg9::assert_arg() ) ) ;
-char& ERROR_missing_result_type_before_the_local_function_parameter_macro_id24(); typedef boost::function_tratis::result_type<boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(ERROR_missing_result_type_before_the_local_function_parameter_macro_id24))>::type>::type boost_local_auxXresult_type24; ; struct ERROR_default_value_cannot_be_specified_as_the_first_element ; typedef struct ERROR_default_value_cannot_be_specified_as_the_first_element10 : boost::mpl::assert_ { static boost::mpl::failed ************ (ERROR_default_value_cannot_be_specified_as_the_first_element ::************ assert_arg()) () { return 0; } } mpl_assert_arg10; static const std::size_t mpl_assertion_in_line_10 = sizeof( boost::mpl::assertion_failed<(false)>( mpl_assert_arg10::assert_arg() ) ) ;
+char& ERROR_missing_result_type_before_the_local_function_parameter_macro_id23(); typedef boost::function_tratis::result_type<boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(ERROR_missing_result_type_before_the_local_function_parameter_macro_id23))>::type>::type boost_local_auxXresult_type23; ; struct ERROR_default_value_cannot_be_specified_as_the_first_element ; typedef struct ERROR_default_value_cannot_be_specified_as_the_first_element9 : boost::mpl::assert_ { static boost::mpl::failed ************ (ERROR_default_value_cannot_be_specified_as_the_first_element ::************ assert_arg()) () { return 0; } } mpl_assert_arg9; static const std::size_t mpl_assertion_in_line_9 = sizeof( boost::mpl::assertion_failed<(false)>( mpl_assert_arg9::assert_arg() ) ) ;
+char& ERROR_missing_result_type_before_the_local_function_parameter_macro_id26(); typedef boost::function_tratis::result_type<boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(ERROR_missing_result_type_before_the_local_function_parameter_macro_id26))>::type>::type boost_local_auxXresult_type26; ; struct ERROR_default_value_cannot_be_specified_as_the_first_element ; typedef struct ERROR_default_value_cannot_be_specified_as_the_first_element10 : boost::mpl::assert_ { static boost::mpl::failed ************ (ERROR_default_value_cannot_be_specified_as_the_first_element ::************ assert_arg()) () { return 0; } } mpl_assert_arg10; static const std::size_t mpl_assertion_in_line_10 = sizeof( boost::mpl::assertion_failed<(false)>( mpl_assert_arg10::assert_arg() ) ) ;
-char& ERROR_missing_result_type_before_the_local_function_parameter_macro_id27(); typedef boost::function_tratis::result_type<boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(ERROR_missing_result_type_before_the_local_function_parameter_macro_id27))>::type>::type boost_local_auxXresult_type27; ; struct ERROR_default_value_at_element_6_must_follow_an_unbound_parameter ; typedef struct ERROR_default_value_at_element_6_must_follow_an_unbound_parameter11 : boost::mpl::assert_ { static boost::mpl::failed ************ (ERROR_default_value_at_element_6_must_follow_an_unbound_parameter ::************ assert_arg()) () { return 0; } } mpl_assert_arg11; static const std::size_t mpl_assertion_in_line_11 = sizeof( boost::mpl::assertion_failed<(false)>( mpl_assert_arg11::assert_arg() ) ) ;
-char& ERROR_missing_result_type_before_the_local_function_parameter_macro_id29(); typedef boost::function_tratis::result_type<boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(ERROR_missing_result_type_before_the_local_function_parameter_macro_id29))>::type>::type boost_local_auxXresult_type29; ; struct ERROR_default_value_at_element_6_must_follow_an_unbound_parameter ; typedef struct ERROR_default_value_at_element_6_must_follow_an_unbound_parameter12 : boost::mpl::assert_ { static boost::mpl::failed ************ (ERROR_default_value_at_element_6_must_follow_an_unbound_parameter ::************ assert_arg()) () { return 0; } } mpl_assert_arg12; static const std::size_t mpl_assertion_in_line_12 = sizeof( boost::mpl::assertion_failed<(false)>( mpl_assert_arg12::assert_arg() ) ) ;
+char& ERROR_missing_result_type_before_the_local_function_parameter_macro_id29(); typedef boost::function_tratis::result_type<boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(ERROR_missing_result_type_before_the_local_function_parameter_macro_id29))>::type>::type boost_local_auxXresult_type29; ; struct ERROR_default_value_at_element_6_must_follow_an_unbound_parameter ; typedef struct ERROR_default_value_at_element_6_must_follow_an_unbound_parameter11 : boost::mpl::assert_ { static boost::mpl::failed ************ (ERROR_default_value_at_element_6_must_follow_an_unbound_parameter ::************ assert_arg()) () { return 0; } } mpl_assert_arg11; static const std::size_t mpl_assertion_in_line_11 = sizeof( boost::mpl::assertion_failed<(false)>( mpl_assert_arg11::assert_arg() ) ) ;
+char& ERROR_missing_result_type_before_the_local_function_parameter_macro_id31(); typedef boost::function_tratis::result_type<boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(ERROR_missing_result_type_before_the_local_function_parameter_macro_id31))>::type>::type boost_local_auxXresult_type31; ; struct ERROR_default_value_at_element_6_must_follow_an_unbound_parameter ; typedef struct ERROR_default_value_at_element_6_must_follow_an_unbound_parameter12 : boost::mpl::assert_ { static boost::mpl::failed ************ (ERROR_default_value_at_element_6_must_follow_an_unbound_parameter ::************ assert_arg()) () { return 0; } } mpl_assert_arg12; static const std::size_t mpl_assertion_in_line_12 = sizeof( boost::mpl::assertion_failed<(false)>( mpl_assert_arg12::assert_arg() ) ) ;
-char& ERROR_missing_result_type_before_the_local_function_parameter_macro_id32(); typedef boost::function_tratis::result_type<boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(ERROR_missing_result_type_before_the_local_function_parameter_macro_id32))>::type>::type boost_local_auxXresult_type32; ; struct ERROR_object_this_cannot_be_bound_multiple_times ; typedef struct ERROR_object_this_cannot_be_bound_multiple_times13 : boost::mpl::assert_ { static boost::mpl::failed ************ (ERROR_object_this_cannot_be_bound_multiple_times ::************ assert_arg()) () { return 0; } } mpl_assert_arg13; static const std::size_t mpl_assertion_in_line_13 = sizeof( boost::mpl::assertion_failed<(false)>( mpl_assert_arg13::assert_arg() ) ) ;
-char& ERROR_missing_result_type_before_the_local_function_parameter_macro_id34(); typedef boost::function_tratis::result_type<boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(ERROR_missing_result_type_before_the_local_function_parameter_macro_id34))>::type>::type boost_local_auxXresult_type34; ; struct ERROR_object_this_cannot_be_bound_multiple_times ; typedef struct ERROR_object_this_cannot_be_bound_multiple_times14 : boost::mpl::assert_ { static boost::mpl::failed ************ (ERROR_object_this_cannot_be_bound_multiple_times ::************ assert_arg()) () { return 0; } } mpl_assert_arg14; static const std::size_t mpl_assertion_in_line_14 = sizeof( boost::mpl::assertion_failed<(false)>( mpl_assert_arg14::assert_arg() ) ) ;
+char& ERROR_missing_result_type_before_the_local_function_parameter_macro_id34(); typedef boost::function_tratis::result_type<boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(ERROR_missing_result_type_before_the_local_function_parameter_macro_id34))>::type>::type boost_local_auxXresult_type34; ; struct ERROR_object_this_cannot_be_bound_multiple_times ; typedef struct ERROR_object_this_cannot_be_bound_multiple_times13 : boost::mpl::assert_ { static boost::mpl::failed ************ (ERROR_object_this_cannot_be_bound_multiple_times ::************ assert_arg()) () { return 0; } } mpl_assert_arg13; static const std::size_t mpl_assertion_in_line_13 = sizeof( boost::mpl::assertion_failed<(false)>( mpl_assert_arg13::assert_arg() ) ) ;
+char& ERROR_missing_result_type_before_the_local_function_parameter_macro_id36(); typedef boost::function_tratis::result_type<boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(ERROR_missing_result_type_before_the_local_function_parameter_macro_id36))>::type>::type boost_local_auxXresult_type36; ; struct ERROR_object_this_cannot_be_bound_multiple_times ; typedef struct ERROR_object_this_cannot_be_bound_multiple_times14 : boost::mpl::assert_ { static boost::mpl::failed ************ (ERROR_object_this_cannot_be_bound_multiple_times ::************ assert_arg()) () { return 0; } } mpl_assert_arg14; static const std::size_t mpl_assertion_in_line_14 = sizeof( boost::mpl::assertion_failed<(false)>( mpl_assert_arg14::assert_arg() ) ) ;
Modified: sandbox/local/libs/local/params_name/03.cpp
==============================================================================
--- sandbox/local/libs/local/params_name/03.cpp (original)
+++ sandbox/local/libs/local/params_name/03.cpp 2011-02-18 17:54:41 EST (Fri, 18 Feb 2011)
@@ -1,6 +1,8 @@
#include <boost/local/function.hpp>
+#define WITH_DEFAULT(value) , default value
+
// OK.
char& BOOST_LOCAL_FUNCTION_PARAMS( (int x) (double y)(default 1.23)
@@ -12,7 +14,7 @@
char& BOOST_LOCAL_FUNCTION_PARAMS(void)
char& BOOST_LOCAL_FUNCTION_PARAMS( (void) )
-//BOOST_LOCAL_FUNCTION_PARAMS() // C99 (not MSVC)
+//char& BOOST_LOCAL_FUNCTION_PARAMS() // C99 (not MSVC)
// Errors.
Modified: sandbox/local/libs/local/params_name/boost/detail/preprocessor/nilseq.hpp
==============================================================================
--- sandbox/local/libs/local/params_name/boost/detail/preprocessor/nilseq.hpp (original)
+++ sandbox/local/libs/local/params_name/boost/detail/preprocessor/nilseq.hpp 2011-02-18 17:54:41 EST (Fri, 18 Feb 2011)
@@ -35,6 +35,18 @@
#define BOOST_DETAIL_PP_NILSEQ_ELEM(n, nilseq) \
BOOST_PP_SEQ_ELEM(BOOST_PP_INC(n), nilseq) /* INC for leading `(NIL)` */
+// ENUM //
+
+#define BOOST_DETAIL_PP_NILSEQ_ENUM_(nilseq) \
+ BOOST_PP_SEQ_ENUM(BOOST_DETAIL_PP_NILSEQ_TO_SEQ(nileseq))
+
+#define BOOST_DETAIL_PP_NILSEQ_ENUM(nilseq) \
+ BOOST_PP_IIF(BOOST_DETAIL_PP_NILSEQ_IS_NIL(nilseq), \
+ BOOST_PP_TUPLE_EAT(1) \
+ , \
+ BOOST_DETAIL_PP_NILSEQ_ENUM_ \
+ )(nilseq)
+
// FOR_EACH_I //
#define BOOST_DETAIL_PP_NILSEQ_FOR_EACH_I_(op, data, nilseq) \
Modified: sandbox/local/libs/local/params_name/boost/local/aux_/abstract_function.hpp
==============================================================================
--- sandbox/local/libs/local/params_name/boost/local/aux_/abstract_function.hpp (original)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/abstract_function.hpp 2011-02-18 17:54:41 EST (Fri, 18 Feb 2011)
@@ -40,7 +40,7 @@
// Iteration within the namespace.
# define BOOST_PP_ITERATION_PARAMS_1 \
(3, (0, BOOST_LOCAL_CONFIG_FUNCTION_ARITY_MAX, \
- BOOST_LOCAL_AUX_FILE_FUNCTION_BASE_HPP))
+ BOOST_LOCAL_AUX_FILE_ABSTRACT_FUNCTION_HPP))
# include BOOST_PP_ITERATE() // Iterate over arity.
}}} // namespace boost::local::aux
@@ -57,7 +57,7 @@
# define BOOST_PP_ITERATION_PARAMS_2 \
(3, (0, BOOST_LOCAL_AUX_arity, \
- BOOST_LOCAL_AUX_FILE_FUNCTION_BASE_HPP))
+ BOOST_LOCAL_AUX_FILE_ABSTRACT_FUNCTION_HPP))
# include BOOST_PP_ITERATE() // Iterate over default params count.
# undef BOOST_LOCAL_AUX_arity
Modified: sandbox/local/libs/local/params_name/boost/local/aux_/file.hpp
==============================================================================
--- sandbox/local/libs/local/params_name/boost/local/aux_/file.hpp (original)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/file.hpp 2011-02-18 17:54:41 EST (Fri, 18 Feb 2011)
@@ -8,11 +8,11 @@
#ifndef BOOST_LOCAL_AUX_FILE_HPP_
#define BOOST_LOCAL_AUX_FILE_HPP_
-#define BOOST_LOCAL_AUX_FILE_FUNCTION_BASE_HPP \
- "boost/local/aux_/function/base.hpp"
+#define BOOST_LOCAL_AUX_FILE_ABSTRACT_FUNCTION_HPP \
+ "boost/local/aux_/abstract_function.hpp"
-#define BOOST_LOCAL_AUX_FILE_FUNCTION_REF_HPP \
- "boost/local/aux_/function_ref.hpp"
+#define BOOST_LOCAL_AUX_FILE_FUNCTION_HPP \
+ "boost/local/aux_/function.hpp"
#endif // #include guard
Modified: sandbox/local/libs/local/params_name/boost/local/aux_/function_macros/code_/binding.hpp
==============================================================================
--- sandbox/local/libs/local/params_name/boost/local/aux_/function_macros/code_/binding.hpp (original)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/function_macros/code_/binding.hpp 2011-02-18 17:54:41 EST (Fri, 18 Feb 2011)
@@ -63,7 +63,7 @@
/* has some bind param then all bind names is never empty nil-seq */ \
BOOST_LOCAL_AUX_FUNCTION_CODE_BINDING_WITH_TAGS_SEQ_( \
BOOST_LOCAL_AUX_PP_SIGN_PARAMS_ALL_BIND(sign_params), \
- BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAS_ANY_BIND_THIS(sign_params), \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAVE_ANY_BIND_THIS(sign_params), \
id, typename_keyword)
// PUBLIC //
@@ -72,7 +72,7 @@
sign_params, id, typename_keyword) \
/* deduce bound type and stores their values/references */ \
BOOST_PP_IIF(BOOST_PP_EXPAND( /* expand needed on MSVC */ \
- BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAS_ANY_BIND(sign_params)), \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAVE_ANY_BIND(sign_params)), \
BOOST_LOCAL_AUX_FUNCTION_CODE_BINDING_ \
, \
BOOST_PP_TUPLE_EAT(3) \
@@ -91,7 +91,7 @@
/* stores bound types/values into `...args` variable (args variable */ \
/* can be accessed by `NAME` macro because doesn't use __LINE__ id) */ \
BOOST_PP_EXPR_IIF(BOOST_PP_EXPAND( /* expand needed on MSVC */ \
- BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAS_ANY_BIND(sign_params)), \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAVE_ANY_BIND(sign_params)), \
BOOST_LOCAL_AUX_SYMBOL_ARGS_VARIABLE_NAME.value = \
&BOOST_LOCAL_AUX_SYMBOL_PARAMS_LOCAL_VARIABLE_NAME(id); \
)
Modified: sandbox/local/libs/local/params_name/boost/local/aux_/function_macros/code_/deduce_result_type.hpp
==============================================================================
--- sandbox/local/libs/local/params_name/boost/local/aux_/function_macros/code_/deduce_result_type.hpp (original)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/function_macros/code_/deduce_result_type.hpp 2011-02-18 17:54:41 EST (Fri, 18 Feb 2011)
@@ -5,6 +5,7 @@
#include "../../symbol.hpp"
// Use this lib's ScopeExit impl (for TYPEOF).
#include "../../scope_exit/scope_exit.hpp"
+#include <boost/type_traits.hpp>
// This must follow the result type.
#define BOOST_LOCAL_AUX_FUNCTION_CODE_DEDUCE_RESULT_TYPE( \
Modified: sandbox/local/libs/local/params_name/boost/local/aux_/function_macros/code_/functor.hpp
==============================================================================
--- sandbox/local/libs/local/params_name/boost/local/aux_/function_macros/code_/functor.hpp (original)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/function_macros/code_/functor.hpp 2011-02-18 17:54:41 EST (Fri, 18 Feb 2011)
@@ -9,25 +9,15 @@
#define BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_HPP_
#include "param.hpp"
-#include "../base.hpp"
+#include "../../abstract_function.hpp"
#include "../../symbol.hpp"
-#include "../../preprocessor/sign/params/unbind.hpp"
-#include "../../preprocessor/sign/params/const_bind_names.hpp"
-#include "../../preprocessor/sign/params/bind_names.hpp"
-#include "../../preprocessor/sign/params/has_unbind.hpp"
-#include "../../preprocessor/sign/params/has_const_bind.hpp"
-#include "../../preprocessor/sign/params/has_bind.hpp"
-#include "../../preprocessor/sign/params/has_any_bind.hpp"
-#include "../../preprocessor/sign/params/this.hpp"
-#include "../../scope_exit/scope_exit.hpp" // Use Boost.ScopeExit internal impl.
+#include "../../preprocessor/sign/params_unbind.hpp"
+#include "../../preprocessor/sign/params_const_bind.hpp"
+#include "../../preprocessor/sign/params_bind.hpp"
+#include "../../scope_exit/scope_exit.hpp" // Use this lib's ScopeExit impl.
#include "../../../config.hpp"
-#include "../../../function_ref.hpp"
-#include <boost/detail/preprocessor/sign/name.hpp>
-#include <boost/detail/preprocessor/sign/result_type.hpp>
-#include <boost/detail/preprocessor/sign/inline.hpp>
-#include <boost/detail/preprocessor/sign/params/fold_left.hpp>
-#include <boost/detail/preprocessor/sign/params/enum.hpp>
-#include <boost/detail/preprocessor/sign/params/first_n.hpp>
+#include "../../../function.hpp"
+#include <boost/type_traits.hpp>
#include <boost/detail/preprocessor/nilseq.hpp>
#include <boost/preprocessor/punctuation/comma_if.hpp>
#include <boost/preprocessor/logical/bitand.hpp>
@@ -39,34 +29,16 @@
#include <boost/preprocessor/control/iif.hpp>
#include <boost/preprocessor/control/expr_if.hpp>
#include <boost/preprocessor/tuple/eat.hpp>
-#include <boost/type_traits.hpp>
// PRIVATE //
-#define BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_DEFAULTS_COUNT_OP_(s, \
- defaults_count, param) \
- BOOST_PP_IIF(BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_PARAMS_HAS_DEFAULT( \
- param), \
- BOOST_PP_INC(defaults_count) \
- , \
- defaults_count \
- )
-
-#define BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_DEFAULTS_COUNT_(sign_params) \
- BOOST_PP_SEQ_FOLD_LEFT( \
- BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_DEFAULTS_COUNT_OP_, \
- 0 /* start with defaults_count to 0 */, \
- BOOST_DETAIL_PP_NILSEQ_TO_SEQ( \
- BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND(sign_params)))
-
// Expand to the function type `R (A1, ...)`.
#define BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_F_(sign_params, id) \
BOOST_LOCAL_AUX_SYMBOL_RESULT_TYPE(id) \
( \
- BOOST_DETAIL_PP_SIGN_PARAMS_ENUM( \
- BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_UNBIND_TYPE, ~, \
- BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND( \
- BOOST_DETAIL_PP_SIGN_PARAMS(sign))) \
+ BOOST_DETAIL_PP_NILSEQ_FOR_EACH_I( \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_UNBIND_DECL, ~, \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND(sign_params)) \
)
#define BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_CALL_(z, \
@@ -75,10 +47,11 @@
const_bind_names, has_const_bind_this, \
bind_names, has_bind_this, \
id) \
- BOOST_LOCAL_AUX_SYNBOL_RESULT_TYPE(id) operator()( \
- BOOST_DETAIL_PP_SIGN_PARAMS_ENUM_Z(z, \
- BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_UNBIND_DECL, \
- ~, unbind_params) \
+ BOOST_LOCAL_AUX_SYMBOL_RESULT_TYPE(id) \
+ operator()( \
+ BOOST_DETAIL_PP_NILSEQ_FOR_EACH_I( \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_UNBIND_ARG_DECL, \
+ ~, unbind_params) \
) { \
/* just forward call to member function with local func name */ \
return BOOST_LOCAL_AUX_SYMBOL_BODY_FUNCTION_NAME( \
@@ -103,30 +76,32 @@
BOOST_PP_EXPR_IIF( \
BOOST_PP_BITOR(has_const_bind_this, has_bind_this), \
BOOST_LOCAL_AUX_SYMBOL_BINDS_VARIABLE_NAME-> \
- BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_THIS_NAME_ \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_THIS_NAME \
) \
/* pass unbind params */ \
- BOOST_PP_COMMA_IF(BOOST_DETAIL_PP_SIGN_PARAMS_SIZE( \
- unbind_params)) \
- BOOST_DETAIL_PP_SIGN_PARAMS_ENUM_Z(z, \
- BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_UNBIND_NAME, \
+ BOOST_PP_COMMA_IF(BOOST_DETAIL_PP_NILSEQ_SIZE(unbind_params)) \
+ BOOST_DETAIL_PP_NILSEQ_FOR_EACH_I( \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_UNBIND_ARG_NAME, \
~, unbind_params) \
); \
}
// Return unbind params but without last (default) params specified by count.
-#define BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_UNBIND_DEFAULTS_REMOVE_N_( \
- defaults_count, unbind_params) \
- BOOST_PP_SEQ_FIRST_N(BOOST_PP_SUB(BOOST_DETAIL_PP_SIGN_PARAMS_SIZE( \
- unbind_params), defaults_count), unbind_params)
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_UNBIND_REMOVE_LAST_N_(n, \
+ unbind_params) \
+ /* must use PP_SEQ instead of PP_NILSEQ so resulting seq is still nil */ \
+ BOOST_PP_SEQ_FIRST_N(BOOST_PP_SUB(BOOST_PP_SEQ_SIZE( \
+ unbind_params), n), unbind_params)
#define BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_CALL_FOR_DEFAULTS_(z, \
n, params_unbind_constbind_hasconstthis_bind_hasthis_id) \
BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_CALL_(z \
, BOOST_PP_TUPLE_ELEM(7, 0, \
params_unbind_constbind_hasconstthis_bind_hasthis_id) \
- , BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_UNBIND_DEFAULTS_REMOVE_N_( \
- n, BOOST_PP_TUPLE_ELEM(7, 1, \
+ /* remove last n default params */ \
+ , BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_UNBIND_REMOVE_LAST_N_( \
+ n, \
+ BOOST_PP_TUPLE_ELEM(7, 1, \
params_unbind_constbind_hasconstthis_bind_hasthis_id)) \
, BOOST_PP_TUPLE_ELEM(7, 2, \
params_unbind_constbind_hasconstthis_bind_hasthis_id) \
@@ -148,46 +123,76 @@
bind_names, has_bind_this, \
id, typename_keyword) \
class BOOST_LOCAL_AUX_SYMBOL_FUNCTOR_CLASS_NAME(id) : \
- public ::boost::local::aux::function_base< \
+ public ::boost::local::aux::abstract_function< \
BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_F_(sign_params, id), \
defaults_count> { \
+ typedef BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_F_(sign_params, id) \
+ BOOST_LOCAL_AUX_SYMBOL_FUNCTION_TYPE; \
public: \
/* constructor */ \
- explicit BOOST_LOCAL_AUX_SYMBOL_FUNCTOR_CLASS_NAME(id)( \
- void* binds) \
- BOOST_PP_EXPR_IIF(BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAS_ANY_BIND( \
- sign_params) \
- : BOOST_LOCAL_AUX_SYMBOL_BINDS_VARIABLE_NAME( \
- static_cast<BOOST_SCOPE_EXIT_AUX_PARAMS_T(id)*>( \
- binds) \
- ) { \
+ explicit BOOST_LOCAL_AUX_SYMBOL_FUNCTOR_CLASS_NAME(id)(void* binds) \
+ BOOST_PP_EXPR_IF(BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAVE_ANY_BIND( \
+ sign_params), \
+ /* member init (not a macro call) */ \
+ : BOOST_LOCAL_AUX_SYMBOL_BINDS_VARIABLE_NAME(static_cast< \
+ BOOST_SCOPE_EXIT_AUX_PARAMS_T(id)*>(binds)) \
+ ) \
+ { \
/* init needs func name so programmed later by `NAME` macro */ \
- BOOST_LOCAL_AUX_SYMBOL_INIT_RECURSION_FUNCTION_NAME() \
+ BOOST_LOCAL_AUX_SYMBOL_INIT_RECURSION_FUNCTION_NAME(); \
} \
/* implement base functor `operator()` (and for all default params) */ \
BOOST_PP_REPEAT( \
- BOOST_PP_INC(defaults_count), /* PP_INC to handle no dflt */ \
+ /* PP_INC to handle no dflt (EXPAND for MVSC) */ \
+ BOOST_PP_EXPAND(BOOST_PP_INC(defaults_count)), \
BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_CALL_FOR_DEFAULTS_,\
(sign_params, unbind_params, const_bind_names, \
has_const_bind_this, bind_names, has_bind_this, id)) \
private: \
- typedef ::boost::local::function_ref< \
- BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_F_(sign_params, id), \
- defaults_count> \
- /* This symbol cannot have ID postfix because it is used */ \
- /* the `NAME` macro (because this symbol is within functor */ \
- /* class it doesn't have to have ID postfix). */ \
- BOOST_LOCAL_AUX_SYMBOL_FUNCTOR_TYPE; \
+ /* this type symbol cannot have ID postfix because it is used */ \
+ /* the `NAME` macro (because this symbol is within functor class */ \
+ /* it doesn't have to have ID postfix). */ \
+ typedef ::boost::local::function<BOOST_LOCAL_AUX_SYMBOL_FUNCTION_TYPE, \
+ defaults_count> BOOST_LOCAL_AUX_SYMBOL_FUNCTOR_TYPE; \
+ /* these types are qualified with extra eventual const and/or & if */ \
+ /* their variables are bound by const and/or & (this is because */ \
+ /* it is difficult strip the eventual & given that the var name is */ \
+ /* alwasy attached to the & symbol plus programmers can always */ \
+ /* remove const& using type traits) */ \
+ /* const bind typeof types */ \
+ BOOST_DETAIL_PP_NILSEQ_FOR_EACH_I( \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_CONST_TYPEDEF, \
+ (id, typename_keyword, 0 /* no offset */), \
+ const_bind_names) \
+ /* bind typeof types */ \
+ BOOST_DETAIL_PP_NILSEQ_FOR_EACH_I( \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_TYPEDEF, \
+ ( id, typename_keyword, \
+ /* offset param index of # of preceeding */ \
+ /* const-bindparams (could be 0)*/ \
+ BOOST_DETAIL_PP_NILSEQ_SIZE(const_bind_names)),\
+ bind_names) \
+ /* this (const or not) bind type */ \
+ BOOST_PP_EXPR_IIF(has_const_bind_this, \
+ typeof \
+ BOOST_LOCAL_AUX_SYMBOL_TYPEOF_TYPE( \
+ typename_keyword ::contract::detail::add_pointed_const< \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_THIS_TYPE(id) \
+ >::type this /* must not use `this_` for TYPEOF_TYPE */ \
+ ) ; /* end typedef */ \
+ ) \
+ BOOST_PP_EXPR_IIF(has_bind_this, \
+ typeof \
+ BOOST_LOCAL_AUX_SYMBOL_TYPEOF_TYPE( \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_THIS_TYPE(id) \
+ this /* must not use `this_` for TYPEOF_TYPE */ \
+ ) ; /* end typedef */ \
+ ) \
/* bind params member variable (note -- signle bind param cannot */ \
/* be represented as single member variables because their names */ \
/* might be prefixed by `&` so they are not know to pp) */ \
- BOOST_PP_EXPR_IIF(BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAVE_ANY_BIND( \
- sign_params), \
- BOOST_SCOPE_EXIT_AUX_PARAMS_T(id)* \
- BOOST_LOCAL_AUX_SYMBOL_BINDS_VARIABLE_NAME; \
- ) \
- BOOST_PP_EXPR_IIF(BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAS_ANY_BIND( \
- sign_params) \
+ BOOST_PP_EXPR_IIF(BOOST_PP_EXPAND( /* EXPAND for MSVC */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAVE_ANY_BIND(sign_params)), \
BOOST_SCOPE_EXIT_AUX_PARAMS_T(id)* \
BOOST_LOCAL_AUX_SYMBOL_BINDS_VARIABLE_NAME; \
) \
@@ -195,8 +200,6 @@
BOOST_LOCAL_AUX_SYMBOL_RESULT_TYPE(id) \
BOOST_LOCAL_AUX_SYMBOL_BODY_FUNCTION_NAME( \
/* const binds */ \
- BOOST_PP_COMMA_IF(BOOST_PP_NOT( \
- BOOST_DETAIL_PP_NILSEQ_IS_NIL(const_bind_names))) \
BOOST_DETAIL_PP_NILSEQ_FOR_EACH_I( \
BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_CONST_BIND_DECL, \
(id, typename_keyword, 0 /* no offset */), \
@@ -206,28 +209,26 @@
BOOST_DETAIL_PP_NILSEQ_IS_NIL(bind_names))) \
BOOST_DETAIL_PP_NILSEQ_FOR_EACH_I( \
BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_BIND_DECL, \
- (id, typename_keyword, \
- /* offset param index of # of preceeding */ \
- /* const-bindparams (could be 0)*/ \
- BOOST_DETAIL_PP_NILSEQ_SIZE(const_bind_names)),\
+ ( id, typename_keyword, \
+ /* offset param index of # of preceeding */ \
+ /* const-bindparams (could be 0)*/ \
+ BOOST_DETAIL_PP_NILSEQ_SIZE(const_bind_names) ),\
bind_names) \
/* `this` bind */ \
BOOST_PP_COMMA_IF(BOOST_PP_BITOR( \
has_const_bind_this, has_bind_this)) \
BOOST_PP_EXPR_IIF(has_const_bind_this, \
typename_keyword ::contract::detail::add_pointed_const< \
- BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_THIS_TYPE_(id) \
- >::type \
- BOOST_LOCAL_CONFIG_THIS_PARAM_NAME \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_THIS_TYPE(id) \
+ >::type BOOST_LOCAL_CONFIG_THIS_PARAM_NAME \
) \
BOOST_PP_EXPR_IIF(has_bind_this, \
- BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_THIS_TYPE_(id) \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_THIS_TYPE(id) \
BOOST_LOCAL_CONFIG_THIS_PARAM_NAME \
) \
/* unbind params (last because they can have defaults) */ \
- BOOST_PP_COMMA_IF(BOOST_DETAIL_PP_SIGN_PARAMS_SIZE( \
- unbind_params)) \
- BOOST_DETAIL_PP_SIGN_PARAMS_ENUM( \
+ BOOST_PP_COMMA_IF(BOOST_DETAIL_PP_NILSEQ_SIZE(unbind_params)) \
+ BOOST_DETAIL_PP_NILSEQ_FOR_EACH_I( \
BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_UNBIND_DECL_WITH_DEFAULT, \
~, unbind_params) \
) /* end body function params */ \
@@ -238,19 +239,18 @@
#define BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR( \
sign_params, id, typename_keyword) \
- BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_( \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_(sign_params, \
/* unbind params (might have defaults) */ \
BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND(sign_params), \
- BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_DEFAULTS_COUNT_( \
- sign_params), \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_COUNT_DEFAULTS(sign_params), \
/* const bind vars (without `this`) */ \
BOOST_LOCAL_AUX_PP_SIGN_PARAMS_CONST_BIND(sign_params), \
/* eventual const bind `this` */ \
BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAVE_CONST_BIND_THIS(sign_params), \
/* bind (not const) vars (without `this`) */ \
- BOOST_LOCAL_AUX_PP_SIGN_PARAMS_BIND_NAMES(sign_params), \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_BIND(sign_params), \
/* eventual bind (not const) `this` */ \
- BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAVE_BIND_THIS(params), \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAVE_BIND_THIS(sign_params), \
/* etc */ \
id, typename_keyword)
Modified: sandbox/local/libs/local/params_name/boost/local/aux_/function_macros/code_/param.hpp
==============================================================================
--- sandbox/local/libs/local/params_name/boost/local/aux_/function_macros/code_/param.hpp (original)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/function_macros/code_/param.hpp 2011-02-18 17:54:41 EST (Fri, 18 Feb 2011)
@@ -20,6 +20,7 @@
#include <boost/preprocessor/control/expr_if.hpp>
#include <boost/preprocessor/control/iif.hpp>
#include <boost/preprocessor/arithmetic/add.hpp>
+#include <boost/preprocessor/arithmetic/inc.hpp>
#include <boost/preprocessor/tuple/elem.hpp>
#include <boost/preprocessor/tuple/eat.hpp>
#include <boost/preprocessor/cat.hpp>
@@ -32,7 +33,7 @@
#define BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_THIS_NAME \
se_this // Using ScopeExit prefix `se_...`.
-#define BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_RENAME_THIS_(param_name) \
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_RENAME_THIS(param_name) \
/* can't use `PP_KEYWORD_IS_THIS_FRONT()` because some `param_name` */ \
/* might start with non-alphanumeric symbol `&` (but never for `this`) */ \
BOOST_PP_IIF(BOOST_DETAIL_PP_KEYWORD_IS_THIS_BACK(param_name), \
@@ -46,7 +47,7 @@
// Adapted from `BOOST_SCOPE_EXIT_AUX_TAG_DECL()`.
#define BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_TAG_DECL(r, id, i, var) \
typedef void (*BOOST_SCOPE_EXIT_AUX_TAG(id,i))(int \
- BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_RENAME_THIS_(var) );
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_RENAME_THIS(var) );
// Bound param (const and non-const).
@@ -61,7 +62,7 @@
#define BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_MAYBECONST_BIND_VALUE( \
id_offset, i, var) \
- BOOST_LOCAL_AUX_SYMBOL_PARAMS_VARIABLE_NAME-> \
+ BOOST_LOCAL_AUX_SYMBOL_BINDS_VARIABLE_NAME-> \
BOOST_SCOPE_EXIT_AUX_PARAM( \
BOOST_PP_TUPLE_ELEM(2, 0, id_offset), \
BOOST_PP_ADD(i, BOOST_PP_TUPLE_ELEM(2, 1, id_offset)), \
@@ -69,12 +70,11 @@
// Adapted from `BOOST_SCOPE_EXIT_AUX_ARG_DECL()`.
#define BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_MAYBECONST_BIND_DECL_( \
- r, id_typename_offset, i, var, const01) \
- BOOST_PP_COMMA_IF(i) \
+ r, id_typename_offset, i, var, is_const) \
BOOST_PP_TUPLE_ELEM(3, 1, id_typename_offset) /* eventual typename */ \
- BOOST_PP_EXPR_IF(const01, \
+ BOOST_PP_EXPR_IF(is_const, \
BOOST_PP_IIF( \
- BOOST_DETAIL_PP_KEYWORD_IS_TRAILING_THIS(var), \
+ BOOST_DETAIL_PP_KEYWORD_IS_THIS_BACK(var), \
::boost::local::aux::add_pointed_const< /* pointed obj const */ \
, \
::boost::add_const< /* outer type const */ \
@@ -83,17 +83,24 @@
) \
BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_MAYBECONST_BIND_TYPE( \
id_typename_offset, i, var) \
- BOOST_PP_EXPR_IF(const01, >::type) \
- BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_RENAME_THIS_(var)
+ BOOST_PP_EXPR_IF(is_const, >::type) \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_RENAME_THIS(var)
+
+// Adapted from `BOOST_SCOPE_EXIT_AUX_ARG_DECL()`.
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_MAYBECONST_BIND_DECL_WITH_COMMA_( \
+ r, id_typename_offset, i, var, is_const) \
+ BOOST_PP_COMMA_IF(i) \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_MAYBECONST_BIND_DECL_( \
+ r, id_typename_offset, i, var, is_const)
#define BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_CONST_BIND_DECL( \
r, id_typename_offset, i, var) \
- BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_MAYBECONST_BIND_DECL_( \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_MAYBECONST_BIND_DECL_WITH_COMMA_( \
r, id_typename_offset, i, var, 1 /* force const */)
#define BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_BIND_DECL( \
r, id_typename_offset, i, var) \
- BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_MAYBECONST_BIND_DECL_( \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_MAYBECONST_BIND_DECL_WITH_COMMA_( \
r, id_typename_offset, i, var, 0 /* do not force const */)
// Adapted from `BOOST_SCOPE_EXIT_AUX_ARG()`.
@@ -103,16 +110,38 @@
BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_MAYBECONST_BIND_VALUE( \
id_offset, i, var)
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_TYPEDEF_( \
+ r, id_typename_offset, i, var, is_const) \
+ typedef \
+ /* the type with the special typeof name */ \
+ BOOST_LOCAL_AUX_SYMBOL_TYPEOF_TYPE( \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_MAYBECONST_BIND_DECL_( \
+ r, id_typename_offset, i, var, is_const) \
+ ) ; /* end typedef */
+
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_CONST_TYPEDEF( \
+ r, id_typename_offset, i, var) \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_TYPEDEF_( \
+ r, id_typename_offset, i, var, 1 /* add const */)
+
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_TYPEDEF( \
+ r, id_typename_offset, i, var) \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_TYPEDEF_( \
+ r, id_typename_offset, i, var, 0 /* do not add const */)
+
// Unbind param.
-#define BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_UNBIND_DECL( \
- z, param, unused) \
- BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_PARAM_DECL(param)
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_UNBIND_DECL(r, unused, i, param) \
+ BOOST_PP_COMMA_IF(i) \
+ BOOST_DETAIL_PP_KEYWORD_AUTO_REMOVE_BACK( \
+ BOOST_DETAIL_PP_KEYWORD_REGISTER_REMOVE_BACK( \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_PARAM_DECL(param) \
+ ) \
+ )
#define BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_UNBIND_DECL_WITH_DEFAULT( \
- z, param, unused) \
- BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_UNBIND_DECL( \
- z, param, unused) \
+ r, unused, i, param) \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_UNBIND_DECL(z, unused, i, param) \
BOOST_PP_IIF(BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_PARAM_HAS_DEFAULT( \
param), \
= BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_PARAM_DEFAULT \
@@ -120,13 +149,31 @@
BOOST_PP_TUPLE_EAT(1) \
)(param)
-#define BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_UNBIND_TYPE_AND_NAME( \
- z, param, unused) \
- BOOST_DETAIL_PP_KEYWORD_AUTO_REMOVE( \
- BOOST_DETAIL_PP_KEYWORD_REGISTER_REMOVE( \
- BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_PARAM_DECL(param) \
- ) \
- )
+// i: 1 for 1st param, 2 for 2nd, ... (start from 1 not 0).
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_UNBIND_ARG_NAME_(i) \
+ /* this must be a generic parameter name because unbind type and name */ \
+ /* are not separate tokens in the macro syntax so name is not available */ \
+ /* separately from its type */ \
+ BOOST_PP_CAT(arg, i)
+
+// i: 1 for 1st param, 2 for 2nd, ... (start from 1 not 0).
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_UNBIND_ARG_TYPE_(i) \
+ /* the parameter type must be accessed using function traits from */ \
+ /* function type because it is not available to the macro syntax */ \
+ /* separately from the parameter name */ \
+ BOOST_PP_CAT(BOOST_PP_CAT(::boost::function_traits< \
+ BOOST_LOCAL_AUX_SYMBOL_FUNCTION_TYPE>::arg, i), _type) \
+
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_UNBIND_ARG_NAME( \
+ r, unused, i, param) \
+ BOOST_PP_COMMA_IF(i) \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_UNBIND_ARG_NAME_(BOOST_PP_INC(i))
+
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_UNBIND_ARG_DECL( \
+ r, unused, i, param) \
+ BOOST_PP_COMMA_IF(i) \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_UNBIND_ARG_TYPE_(BOOST_PP_INC(i)) \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_UNBIND_ARG_NAME_(BOOST_PP_INC(i))
#endif // #include guard
Modified: sandbox/local/libs/local/params_name/boost/local/aux_/function_macros/params.hpp
==============================================================================
--- sandbox/local/libs/local/params_name/boost/local/aux_/function_macros/params.hpp (original)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/function_macros/params.hpp 2011-02-18 17:54:41 EST (Fri, 18 Feb 2011)
@@ -14,7 +14,7 @@
#define BOOST_LOCAL_AUX_FUNCTION_PARAMS_OK_(sign_params, id, typename_keyword) \
BOOST_LOCAL_AUX_FUNCTION_CODE_BINDING(sign_params, id, typename_keyword) \
- BOOST_LOCAL_AUX_FUNCTION_BODE_FUNCTOR(sign_params, id, typename_keyword)
+ BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR(sign_params, id, typename_keyword)
#define BOOST_LOCAL_AUX_FUNCTION_PARAMS_ERROR_( \
sign_params, id, typename_keyword) \
Modified: sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/params_unbind.hpp
==============================================================================
--- sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/params_unbind.hpp (original)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/params_unbind.hpp 2011-02-18 17:54:41 EST (Fri, 18 Feb 2011)
@@ -4,15 +4,36 @@
#include "parsed_params_/index.hpp"
#include <boost/preprocessor/tuple/elem.hpp>
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/preprocessor/control/iif.hpp>
+#include <boost/preprocessor/logical/not.hpp>
+#include <boost/preprocessor/seq/fold_left.hpp>
+#include <boost/preprocessor/seq.hpp> // For TAIL.
-// Private API.
+// PRIVATE //
// Param 2-tuple `([auto | register] type name, default_value)`.
#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_PARAM_INDEX_DECL_ 0
#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_PARAM_INDEX_DEFAULT_ 1
#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_PARAM_INDEX_MAX_ 2
-// Public API.
+#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_COUNT_DEFAULTS_OP_(s, \
+ defaults_count, param) \
+ BOOST_PP_IIF(BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_PARAM_HAS_DEFAULT( \
+ param), \
+ BOOST_PP_INC \
+ , \
+ defaults_count BOOST_PP_TUPLE_EAT(1) \
+ )(defaults_count)
+
+// Precondition: unbinds is a nil-seq which is not nil.
+#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_COUNT_DEFAULTS_(unbinds) \
+ BOOST_PP_SEQ_FOLD_LEFT( \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_COUNT_DEFAULTS_OP_, \
+ 0 /* start with defaults_count to 0 */, \
+ BOOST_PP_SEQ_TAIL(unbinds)) /* TAIL for leading NIL */
+
+// PUBLIC //
// Expand to param declaration: [auto | register] type name.
#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_PARAM_DECL(param) \
@@ -24,17 +45,29 @@
#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_PARAM_DEFAULT(param) \
BOOST_PP_TUPLE_ELEM( \
BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_PARAM_INDEX_MAX_, \
- BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_PARAM_INDEX_DEFAULT_, param)
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_PARAM_INDEX_DEFAULT_, param) \
+ (/* expand empty */)
// Expand to 1 if param has default value, 0 otherwise.
#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_PARAM_HAS_DEFAULT(param) \
- BOOST_PP_IF_EMPTY(BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_PARAM_DEFAULT( \
- param) (/* expand empty */) )
+ BOOST_PP_NOT(BOOST_PP_IS_EMPTY( \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_PARAM_DEFAULT(param)))
// Expand to nil-seq of ALL unbind params.
#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND(params) \
BOOST_PP_TUPLE_ELEM(BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_INDEX_MAX, \
BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_INDEX_UNBIND, params)
+#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAVE_UNBIND(params) \
+ BOOST_PP_GREATER(BOOST_PP_SEQ_SIZE( /* size > 1 because nil-seq */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND(params)), 1)
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_COUNT_DEFAULTS(params) \
+ BOOST_PP_IIF(BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAVE_UNBIND(params), \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_COUNT_DEFAULTS_ \
+ , \
+ 0 BOOST_PP_TUPLE_EAT(1) \
+ )(BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND(params))
+
#endif // #include guard
Modified: sandbox/local/libs/local/params_name/boost/local/aux_/symbol.hpp
==============================================================================
--- sandbox/local/libs/local/params_name/boost/local/aux_/symbol.hpp (original)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/symbol.hpp 2011-02-18 17:54:41 EST (Fri, 18 Feb 2011)
@@ -22,20 +22,18 @@
// reserved to the implementation for use as a name in the global namespace".
#define BOOST_LOCAL_AUX_SYMBOL_INFIX X // `X` used as separator.
-#define BOOST_LOCAL_AUX_SYMBOL_PREFIX \
-
-// Expand to `contract...<name>`.
-#define BOOST_LOCAL_AUX_SYMBOL(name) \
- BOOST_PP_CAT(BOOST_PP_CAT(boost_local, \
- BOOST_LOCAL_AUX_SYMBOL_INFIX), name)
-
-// Expand to `contract...aux...<name>` (internal).
+// Expand to `...aux...<name>` (internal).
#define BOOST_LOCAL_AUX_INTERNAL_SYMBOL(name) \
BOOST_PP_CAT(BOOST_PP_CAT(boost_local_aux, \
BOOST_LOCAL_AUX_SYMBOL_INFIX), name)
// Names (functions, variables, etc) //
+// Expand to `<name>...aux...` (internal).
+#define BOOST_LOCAL_AUX_SYMBOL_TYPEOF_TYPE(name) \
+ BOOST_PP_CAT(BOOST_PP_CAT(name, BOOST_LOCAL_AUX_SYMBOL_INFIX), \
+ BOOST_LOCAL_AUX_INTERNAL_SYMBOL(typeof_type))
+
#define BOOST_LOCAL_AUX_SYMBOL_DEDUCE_RESULT_TYPE(id) \
/* symbol (not internal) also gives error if missing result type */ \
BOOST_PP_CAT(ERROR_missing_result_type_before_the_local_function_parameter_macro_id, id)
@@ -64,6 +62,9 @@
#define BOOST_LOCAL_AUX_SYMBOL_BINDS_VARIABLE_NAME \
BOOST_LOCAL_AUX_INTERNAL_SYMBOL(binds)
+#define BOOST_LOCAL_AUX_SYMBOL_FUNCTION_TYPE \
+ BOOST_LOCAL_AUX_INTERNAL_SYMBOL(function_type)
+
#define BOOST_LOCAL_AUX_SYMBOL_FUNCTOR_TYPE \
BOOST_LOCAL_AUX_INTERNAL_SYMBOL(functor_type)
Modified: sandbox/local/libs/local/params_name/boost/local/function.hpp
==============================================================================
--- sandbox/local/libs/local/params_name/boost/local/function.hpp (original)
+++ sandbox/local/libs/local/params_name/boost/local/function.hpp 2011-02-18 17:54:41 EST (Fri, 18 Feb 2011)
@@ -1,8 +1,13 @@
+/** @file
+ * @brief Local function references can be passed as function and template
+ * parameters, they can be assigned to variables, etc.
+ */
+
#ifndef BOOST_LOCAL_FUNCTION_HPP_
#define BOOST_LOCAL_FUNCTION_HPP_
-#include "aux_/function/params.hpp"
+#include "aux_/function_macros/params.hpp"
#include <boost/preprocessor/facilities/empty.hpp>
#include <boost/config.hpp> // Handle variadic macros.
@@ -20,5 +25,96 @@
BOOST_LOCAL_AUX_PP_VA_TO_SEQ(__VA_ARGS__), BOOST_PP_EMPTY())
#endif
+#define BOOST_LOCAL_FUNCTION_NAME(name) \
+ name
+
+namespace boost { namespace local {
+
+/**
+ * @brief Template to hold a reference to a local function while supporting
+ * eventual default function parameters.
+ *
+ * This template defines several specializations to handle a generic number
+ * <c>N</c> of function parameters some of which can have default values.
+ * The number of supported function parameters goes from <c>0</c> (for a
+ * function with no parameter) to a maximum of
+ * @RefMacro{BOOST_LOCAL_CONFIG_FUNCTION_ARITY_MAX}.
+ *
+ * Each template specialization defines call operators <c>operator()(...)</c>
+ * with a different set of parameters to handle the number of default
+ * parameters specified by <c>defaults</c> (see @RefSect{Advanced} section):
+ * @code
+ * template<typename Result, typename Arg1, ..., typename ArgN, size_t defaults = 0>
+ * class function_ref<Result (Arg1, ..., ArgN), defaults> {
+ * public:
+ * Result operator()(Arg1, ..., ArgN-2, ArgN-1, ArgN);
+ * // Call operators to handle default parameters:
+ * Result operator()(Arg1, ..., ArgN-2, ArgN-1); // iff defaults >= 1
+ * Result operator()(Arg1, ..., ArgN-2); // iff defaults >= 2
+ * ... // etc
+ *
+ * // Copy constructor and assignment operator for local functions:
+ * function_ref(local_function<F, defaults>& ref);
+ * function_ref& operator=(local_function<F, defaults>& ref);
+ * };
+ * @endcode
+ * Where:
+ * - <c>Result</c> is the function result type.
+ * It can be <c>void</c>.
+ * - <c>ArgN</c> is the last function parameter type, <c>ArgN-1</c> is the
+ * second last function parameter type, etc.
+ * These are all optional (none is specified for a function with no
+ * parameter, only <c>Arg1</c> is specified for a function with only one
+ * parameter, etc).
+ * - The operator <c>Result operator()(Arg1, ..., ArgN-2, ArgN-1)</c> is
+ * defined if and only if there are one or more default parameters
+ * (<c>defaults >= 1</c>), the operator
+ * <c>Result operator()(Arg1, ..., ArgN-2)</c> is defined if and only if
+ * there are two or more default parameters (<c>defaults >= 2</c>), etc.
+ * - <c>local_function<F, defaults></c> is an internal type for a local
+ * function with a signature matching <c>F</c> and with a number of default
+ * parameters equal to <c>defaults</c>.
+ * - The copy constructor and assignment operator <c>operator=</c> allow to
+ * assign this template to a reference to a local function with a signature
+ * matching <c>F</c> and with a number of default parameters equal to
+ * <c>defaults</c>.
+ *
+ * @Warning Programmers must make sure that the local function survives the
+ * scope of the function reference (otherwise the reference will be invalid
+ * and its use will generate a run-time error as usual with C++ references).
+ *
+ * @Params
+ * @Param{F,
+ * The function signature expressed using the Boost.Function's
+ * preferred syntax: <c>F = Result (Arg1\, ...\, ArgN)</c>.
+ * }
+ * @Param{defaults,
+ * The number of the function default parameters in
+ * <c>[0\,</c>
+ * @RefMacro{BOOST_LOCAL_CONFIG_FUNCTION_ARITY_MAX}<c>]</c>.
+ * As usual in C++\, default parameters are counted starting from the last
+ * parameter:
+ * <c>defaults = 0</c> means that no parameter is optional\,
+ * <c>defaults = 1</c> means that the last parameter is optional\,
+ * <c>defaults = 2</c> means that the last two parameters are optional\, etc.
+ * }
+ * @EndParams
+ *
+ * @Note This template is similar to <c>boost::function<></c> but it also
+ * supports eventual default parameters.
+ *
+ * @See @RefSect{Advanced} section,
+ * @RefMacro{BOOST_LOCAL_CONFIG_FUNCTION_ARITY_MAX},
+ * @RefMacro{BOOST_LOCAL_FUNCTION},
+ * <a href='http://www.boost.org/doc/libs/release/doc/html/function.html'>Boost.Function</a>.
+ */
+template<typename F, size_t defaults = 0> // Defaults count is opt.
+struct function {}; // Empty so never used directly.
+
+}} // namespace boost::local
+
+// Template specializations (must be #included here after the above template).
+#include "aux_/function.hpp"
+
#endif // #include guard
Added: sandbox/local/libs/local/params_name/boost/local/typeof.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/typeof.hpp 2011-02-18 17:54:41 EST (Fri, 18 Feb 2011)
@@ -0,0 +1,14 @@
+
+#ifndef BOOST_LOCAL_TYPEOF_HPP_
+#define BOOST_LOCAL_TYPEOF_HPP_
+
+#include "aux_/symbol.hpp"
+
+// Bound variable name. Expand to qualified bound type (i.e., bound variable
+// type with extra const and/or & for const and/or reference binds).
+// Can be used with local functions, blocks, and exits. It accepts `this`.
+#define BOOST_LOCAL_TYPEOF(variable) \
+ BOOST_LOCAL_AUX_SYMBOL_TYPEOF_TYPE(variable)
+
+#endif // #include guard
+
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk