diff options
Diffstat (limited to '3rdParty/Boost/boost/iterator')
m--------- | 3rdParty/Boost | 0 | ||||
-rw-r--r-- | 3rdParty/Boost/boost/iterator/detail/config_def.hpp | 137 | ||||
-rw-r--r-- | 3rdParty/Boost/boost/iterator/detail/config_undef.hpp | 25 | ||||
-rw-r--r-- | 3rdParty/Boost/boost/iterator/detail/enable_if.hpp | 86 | ||||
-rw-r--r-- | 3rdParty/Boost/boost/iterator/detail/facade_iterator_category.hpp | 200 | ||||
-rw-r--r-- | 3rdParty/Boost/boost/iterator/detail/minimum_category.hpp | 116 | ||||
-rw-r--r-- | 3rdParty/Boost/boost/iterator/interoperable.hpp | 50 | ||||
-rw-r--r-- | 3rdParty/Boost/boost/iterator/iterator_adaptor.hpp | 371 | ||||
-rw-r--r-- | 3rdParty/Boost/boost/iterator/iterator_categories.hpp | 188 | ||||
-rw-r--r-- | 3rdParty/Boost/boost/iterator/iterator_facade.hpp | 878 | ||||
-rw-r--r-- | 3rdParty/Boost/boost/iterator/iterator_traits.hpp | 92 | ||||
-rw-r--r-- | 3rdParty/Boost/boost/iterator/reverse_iterator.hpp | 69 | ||||
-rw-r--r-- | 3rdParty/Boost/boost/iterator/transform_iterator.hpp | 188 |
13 files changed, 0 insertions, 2400 deletions
diff --git a/3rdParty/Boost b/3rdParty/Boost new file mode 160000 +Subproject 3bbdbc8cf1996f23d9a366da8bac0f97be6ad79 diff --git a/3rdParty/Boost/boost/iterator/detail/config_def.hpp b/3rdParty/Boost/boost/iterator/detail/config_def.hpp deleted file mode 100644 index fa8d667..0000000 --- a/3rdParty/Boost/boost/iterator/detail/config_def.hpp +++ /dev/null @@ -1,137 +0,0 @@ -// (C) Copyright David Abrahams 2002. -// (C) Copyright Jeremy Siek 2002. -// (C) Copyright Thomas Witt 2002. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// no include guard multiple inclusion intended - -// -// This is a temporary workaround until the bulk of this is -// available in boost config. -// 23/02/03 thw -// - -#include <boost/config.hpp> // for prior -#include <boost/detail/workaround.hpp> - -#ifdef BOOST_ITERATOR_CONFIG_DEF -# error you have nested config_def #inclusion. -#else -# define BOOST_ITERATOR_CONFIG_DEF -#endif - -// We enable this always now. Otherwise, the simple case in -// libs/iterator/test/constant_iterator_arrow.cpp fails to compile -// because the operator-> return is improperly deduced as a non-const -// pointer. -#if 1 || defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \ - || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x531)) - -// Recall that in general, compilers without partial specialization -// can't strip constness. Consider counting_iterator, which normally -// passes a const Value to iterator_facade. As a result, any code -// which makes a std::vector of the iterator's value_type will fail -// when its allocator declares functions overloaded on reference and -// const_reference (the same type). -// -// Furthermore, Borland 5.5.1 drops constness in enough ways that we -// end up using a proxy for operator[] when we otherwise shouldn't. -// Using reference constness gives it an extra hint that it can -// return the value_type from operator[] directly, but is not -// strictly necessary. Not sure how best to resolve this one. - -# define BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY 1 - -#endif - -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \ - || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x5A0)) \ - || (BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, <= 700) && defined(_MSC_VER)) \ - || BOOST_WORKAROUND(__DECCXX_VER, BOOST_TESTED_AT(60590042)) \ - || BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x590)) - -# define BOOST_NO_LVALUE_RETURN_DETECTION - -# if 0 // test code - struct v {}; - - typedef char (&no)[3]; - - template <class T> - no foo(T const&, ...); - - template <class T> - char foo(T&, int); - - - struct value_iterator - { - v operator*() const; - }; - - template <class T> - struct lvalue_deref_helper - { - static T& x; - enum { value = (sizeof(foo(*x,0)) == 1) }; - }; - - int z2[(lvalue_deref_helper<v*>::value == 1) ? 1 : -1]; - int z[(lvalue_deref_helper<value_iterator>::value) == 1 ? -1 : 1 ]; -# endif - -#endif - -#if BOOST_WORKAROUND(__MWERKS__, <=0x2407) -# define BOOST_NO_IS_CONVERTIBLE // "is_convertible doesn't work for simple types" -#endif - -#if BOOST_WORKAROUND(__GNUC__, == 2) \ - || BOOST_WORKAROUND(__GNUC__, == 3) && BOOST_WORKAROUND(__GNUC_MINOR__, < 4) && !defined(__EDG_VERSION__) \ - || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x551)) -# define BOOST_NO_IS_CONVERTIBLE_TEMPLATE // The following program fails to compile: - -# if 0 // test code - #include <boost/type_traits/is_convertible.hpp> - template <class T> - struct foo - { - foo(T); - - template <class U> - foo(foo<U> const& other) : p(other.p) { } - - T p; - }; - - bool x = boost::is_convertible<foo<int const*>, foo<int*> >::value; -# endif - -#endif - - -#if !defined(BOOST_MSVC) && (defined(BOOST_NO_SFINAE) || defined(BOOST_NO_IS_CONVERTIBLE) || defined(BOOST_NO_IS_CONVERTIBLE_TEMPLATE)) -# define BOOST_NO_STRICT_ITERATOR_INTEROPERABILITY -#endif - -# if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300) -# define BOOST_ARG_DEPENDENT_TYPENAME typename -# else -# define BOOST_ARG_DEPENDENT_TYPENAME -# endif - -# if BOOST_WORKAROUND(__GNUC__, == 2) && BOOST_WORKAROUND(__GNUC_MINOR__, BOOST_TESTED_AT(95)) \ - || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) - -// GCC-2.95 eagerly instantiates templated constructors and conversion -// operators in convertibility checks, causing premature errors. -// -// Borland's problems are harder to diagnose due to lack of an -// instantiation stack backtrace. They may be due in part to the fact -// that it drops cv-qualification willy-nilly in templates. -# define BOOST_NO_ONE_WAY_ITERATOR_INTEROP -# endif - -// no include guard; multiple inclusion intended diff --git a/3rdParty/Boost/boost/iterator/detail/config_undef.hpp b/3rdParty/Boost/boost/iterator/detail/config_undef.hpp deleted file mode 100644 index 9dcd1d5..0000000 --- a/3rdParty/Boost/boost/iterator/detail/config_undef.hpp +++ /dev/null @@ -1,25 +0,0 @@ -// (C) Copyright Thomas Witt 2002. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// no include guard multiple inclusion intended - -// -// This is a temporary workaround until the bulk of this is -// available in boost config. -// 23/02/03 thw -// - -#undef BOOST_NO_IS_CONVERTIBLE -#undef BOOST_NO_IS_CONVERTIBLE_TEMPLATE -#undef BOOST_NO_STRICT_ITERATOR_INTEROPERABILITY -#undef BOOST_ARG_DEPENDENT_TYPENAME -#undef BOOST_NO_LVALUE_RETURN_DETECTION -#undef BOOST_NO_ONE_WAY_ITERATOR_INTEROP - -#ifdef BOOST_ITERATOR_CONFIG_DEF -# undef BOOST_ITERATOR_CONFIG_DEF -#else -# error missing or nested #include config_def -#endif diff --git a/3rdParty/Boost/boost/iterator/detail/enable_if.hpp b/3rdParty/Boost/boost/iterator/detail/enable_if.hpp deleted file mode 100644 index 0fd36fc..0000000 --- a/3rdParty/Boost/boost/iterator/detail/enable_if.hpp +++ /dev/null @@ -1,86 +0,0 @@ -// (C) Copyright David Abrahams 2002. -// (C) Copyright Jeremy Siek 2002. -// (C) Copyright Thomas Witt 2002. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_ENABLE_IF_23022003THW_HPP -#define BOOST_ENABLE_IF_23022003THW_HPP - -#include <boost/detail/workaround.hpp> -#include <boost/mpl/identity.hpp> - -#include <boost/iterator/detail/config_def.hpp> - -// -// Boost iterators uses its own enable_if cause we need -// special semantics for deficient compilers. -// 23/02/03 thw -// - -namespace boost -{ - - namespace iterators - { - // - // Base machinery for all kinds of enable if - // - template<bool> - struct enabled - { - template<typename T> - struct base - { - typedef T type; - }; - }; - - // - // For compilers that don't support "Substitution Failure Is Not An Error" - // enable_if falls back to always enabled. See comments - // on operator implementation for consequences. - // - template<> - struct enabled<false> - { - template<typename T> - struct base - { -#ifdef BOOST_NO_SFINAE - - typedef T type; - - // This way to do it would give a nice error message containing - // invalid overload, but has the big disadvantage that - // there is no reference to user code in the error message. - // - // struct invalid_overload; - // typedef invalid_overload type; - // -#endif - }; - }; - - - template <class Cond, - class Return> - struct enable_if -# if !defined(BOOST_NO_SFINAE) && !defined(BOOST_NO_IS_CONVERTIBLE) - : enabled<(Cond::value)>::template base<Return> -# else - : mpl::identity<Return> -# endif - { -# if BOOST_WORKAROUND(BOOST_MSVC, < 1300) - typedef Return type; -# endif - }; - - } // namespace iterators - -} // namespace boost - -#include <boost/iterator/detail/config_undef.hpp> - -#endif // BOOST_ENABLE_IF_23022003THW_HPP diff --git a/3rdParty/Boost/boost/iterator/detail/facade_iterator_category.hpp b/3rdParty/Boost/boost/iterator/detail/facade_iterator_category.hpp deleted file mode 100644 index 2c4771d..0000000 --- a/3rdParty/Boost/boost/iterator/detail/facade_iterator_category.hpp +++ /dev/null @@ -1,200 +0,0 @@ -// Copyright David Abrahams 2003. Use, modification and distribution is -// subject to the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef FACADE_ITERATOR_CATEGORY_DWA20031118_HPP -# define FACADE_ITERATOR_CATEGORY_DWA20031118_HPP - -# include <boost/iterator/iterator_categories.hpp> - -# include <boost/mpl/or.hpp> // used in iterator_tag inheritance logic -# include <boost/mpl/and.hpp> -# include <boost/mpl/if.hpp> -# include <boost/mpl/eval_if.hpp> -# include <boost/mpl/identity.hpp> -# include <boost/mpl/assert.hpp> - -# include <boost/type_traits/is_same.hpp> -# include <boost/type_traits/is_const.hpp> -# include <boost/type_traits/is_reference.hpp> -# include <boost/type_traits/is_convertible.hpp> - -# include <boost/type_traits/is_same.hpp> - -# include <boost/iterator/detail/config_def.hpp> // try to keep this last - -# ifdef BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY -# include <boost/detail/indirect_traits.hpp> -# endif - -// -// iterator_category deduction for iterator_facade -// - -// forward declaration -namespace boost { struct use_default; } - -namespace boost { namespace detail { - -struct input_output_iterator_tag - : std::input_iterator_tag -{ - // Using inheritance for only input_iterator_tag helps to avoid - // ambiguities when a stdlib implementation dispatches on a - // function which is overloaded on both input_iterator_tag and - // output_iterator_tag, as STLPort does, in its __valid_range - // function. I claim it's better to avoid the ambiguity in these - // cases. - operator std::output_iterator_tag() const - { - return std::output_iterator_tag(); - } -}; - -// -// True iff the user has explicitly disabled writability of this -// iterator. Pass the iterator_facade's Value parameter and its -// nested ::reference type. -// -template <class ValueParam, class Reference> -struct iterator_writability_disabled -# ifdef BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY // Adding Thomas' logic? - : mpl::or_< - is_const<Reference> - , boost::detail::indirect_traits::is_reference_to_const<Reference> - , is_const<ValueParam> - > -# else - : is_const<ValueParam> -# endif -{}; - - -// -// Convert an iterator_facade's traversal category, Value parameter, -// and ::reference type to an appropriate old-style category. -// -// If writability has been disabled per the above metafunction, the -// result will not be convertible to output_iterator_tag. -// -// Otherwise, if Traversal == single_pass_traversal_tag, the following -// conditions will result in a tag that is convertible both to -// input_iterator_tag and output_iterator_tag: -// -// 1. Reference is a reference to non-const -// 2. Reference is not a reference and is convertible to Value -// -template <class Traversal, class ValueParam, class Reference> -struct iterator_facade_default_category - : mpl::eval_if< - mpl::and_< - is_reference<Reference> - , is_convertible<Traversal,forward_traversal_tag> - > - , mpl::eval_if< - is_convertible<Traversal,random_access_traversal_tag> - , mpl::identity<std::random_access_iterator_tag> - , mpl::if_< - is_convertible<Traversal,bidirectional_traversal_tag> - , std::bidirectional_iterator_tag - , std::forward_iterator_tag - > - > - , typename mpl::eval_if< - mpl::and_< - is_convertible<Traversal, single_pass_traversal_tag> - - // check for readability - , is_convertible<Reference, ValueParam> - > - , mpl::identity<std::input_iterator_tag> - , mpl::identity<Traversal> - > - > -{ -}; - -// True iff T is convertible to an old-style iterator category. -template <class T> -struct is_iterator_category - : mpl::or_< - is_convertible<T,std::input_iterator_tag> - , is_convertible<T,std::output_iterator_tag> - > -{ -}; - -template <class T> -struct is_iterator_traversal - : is_convertible<T,incrementable_traversal_tag> -{}; - -// -// A composite iterator_category tag convertible to Category (a pure -// old-style category) and Traversal (a pure traversal tag). -// Traversal must be a strict increase of the traversal power given by -// Category. -// -template <class Category, class Traversal> -struct iterator_category_with_traversal - : Category, Traversal -{ -# if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300) - // Make sure this isn't used to build any categories where - // convertibility to Traversal is redundant. Should just use the - // Category element in that case. - BOOST_MPL_ASSERT_NOT(( - is_convertible< - typename iterator_category_to_traversal<Category>::type - , Traversal - >)); - - BOOST_MPL_ASSERT((is_iterator_category<Category>)); - BOOST_MPL_ASSERT_NOT((is_iterator_category<Traversal>)); - BOOST_MPL_ASSERT_NOT((is_iterator_traversal<Category>)); -# if !BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1310)) - BOOST_MPL_ASSERT((is_iterator_traversal<Traversal>)); -# endif -# endif -}; - -// Computes an iterator_category tag whose traversal is Traversal and -// which is appropriate for an iterator -template <class Traversal, class ValueParam, class Reference> -struct facade_iterator_category_impl -{ -# if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300) - BOOST_MPL_ASSERT_NOT((is_iterator_category<Traversal>)); -# endif - - typedef typename iterator_facade_default_category< - Traversal,ValueParam,Reference - >::type category; - - typedef typename mpl::if_< - is_same< - Traversal - , typename iterator_category_to_traversal<category>::type - > - , category - , iterator_category_with_traversal<category,Traversal> - >::type type; -}; - -// -// Compute an iterator_category for iterator_facade -// -template <class CategoryOrTraversal, class ValueParam, class Reference> -struct facade_iterator_category - : mpl::eval_if< - is_iterator_category<CategoryOrTraversal> - , mpl::identity<CategoryOrTraversal> // old-style categories are fine as-is - , facade_iterator_category_impl<CategoryOrTraversal,ValueParam,Reference> - > -{ -}; - -}} // namespace boost::detail - -# include <boost/iterator/detail/config_undef.hpp> - -#endif // FACADE_ITERATOR_CATEGORY_DWA20031118_HPP diff --git a/3rdParty/Boost/boost/iterator/detail/minimum_category.hpp b/3rdParty/Boost/boost/iterator/detail/minimum_category.hpp deleted file mode 100644 index 96501dd..0000000 --- a/3rdParty/Boost/boost/iterator/detail/minimum_category.hpp +++ /dev/null @@ -1,116 +0,0 @@ -// Copyright David Abrahams 2003. Use, modification and distribution is -// subject to the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef MINIMUM_CATEGORY_DWA20031119_HPP -# define MINIMUM_CATEGORY_DWA20031119_HPP - -# include <boost/type_traits/is_convertible.hpp> -# include <boost/type_traits/is_same.hpp> - -# include <boost/mpl/aux_/lambda_support.hpp> - -namespace boost { namespace detail { -// -// Returns the minimum category type or error_type -// if T1 and T2 are unrelated. -// -// For compilers not supporting is_convertible this only -// works with the new boost return and traversal category -// types. The exact boost _types_ are required. No derived types -// will work. -// -// -template <bool GreaterEqual, bool LessEqual> -struct minimum_category_impl -# if BOOST_WORKAROUND(BOOST_MSVC, < 1300) -{ - template <class T1, class T2> struct apply - { - typedef T2 type; - }; - typedef void type; -} -# endif -; - -template <class T1, class T2> -struct error_not_related_by_convertibility; - -template <> -struct minimum_category_impl<true,false> -{ - template <class T1, class T2> struct apply - { - typedef T2 type; - }; -}; - -template <> -struct minimum_category_impl<false,true> -{ - template <class T1, class T2> struct apply - { - typedef T1 type; - }; -}; - -template <> -struct minimum_category_impl<true,true> -{ - template <class T1, class T2> struct apply - { - BOOST_STATIC_ASSERT((is_same<T1,T2>::value)); - typedef T1 type; - }; -}; - -template <> -struct minimum_category_impl<false,false> -{ - template <class T1, class T2> struct apply - : error_not_related_by_convertibility<T1,T2> - { - }; -}; - -template <class T1 = mpl::_1, class T2 = mpl::_2> -struct minimum_category -{ - typedef minimum_category_impl< -# if BOOST_WORKAROUND(BOOST_MSVC, < 1300) // ETI workaround - is_same<T2,int>::value || -# endif - ::boost::is_convertible<T1,T2>::value - , ::boost::is_convertible<T2,T1>::value -# if BOOST_WORKAROUND(BOOST_MSVC, < 1300) // ETI workaround - || is_same<T1,int>::value -# endif - > outer; - - typedef typename outer::template apply<T1,T2> inner; - typedef typename inner::type type; - - BOOST_MPL_AUX_LAMBDA_SUPPORT(2,minimum_category,(T1,T2)) -}; - -template <> -struct minimum_category<mpl::_1,mpl::_2> -{ - template <class T1, class T2> - struct apply : minimum_category<T1,T2> - {}; - - BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2,minimum_category,(mpl::_1,mpl::_2)) -}; - -# if BOOST_WORKAROUND(BOOST_MSVC, < 1300) // ETI workaround -template <> -struct minimum_category<int,int> -{ - typedef int type; -}; -# endif - -}} // namespace boost::detail - -#endif // MINIMUM_CATEGORY_DWA20031119_HPP diff --git a/3rdParty/Boost/boost/iterator/interoperable.hpp b/3rdParty/Boost/boost/iterator/interoperable.hpp deleted file mode 100644 index c13dd9b..0000000 --- a/3rdParty/Boost/boost/iterator/interoperable.hpp +++ /dev/null @@ -1,50 +0,0 @@ -// (C) Copyright David Abrahams 2002. -// (C) Copyright Jeremy Siek 2002. -// (C) Copyright Thomas Witt 2002. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_INTEROPERABLE_23022003THW_HPP -# define BOOST_INTEROPERABLE_23022003THW_HPP - -# include <boost/mpl/bool.hpp> -# include <boost/mpl/or.hpp> - -# include <boost/type_traits/is_convertible.hpp> - -# include <boost/iterator/detail/config_def.hpp> // must appear last - -namespace boost -{ - - // - // Meta function that determines whether two - // iterator types are considered interoperable. - // - // Two iterator types A,B are considered interoperable if either - // A is convertible to B or vice versa. - // This interoperability definition is in sync with the - // standards requirements on constant/mutable container - // iterators (23.1 [lib.container.requirements]). - // - // For compilers that don't support is_convertible - // is_interoperable gives false positives. See comments - // on operator implementation for consequences. - // - template <typename A, typename B> - struct is_interoperable -# ifdef BOOST_NO_STRICT_ITERATOR_INTEROPERABILITY - : mpl::true_ -# else - : mpl::or_< - is_convertible< A, B > - , is_convertible< B, A > > -# endif - { - }; - -} // namespace boost - -# include <boost/iterator/detail/config_undef.hpp> - -#endif // BOOST_INTEROPERABLE_23022003THW_HPP diff --git a/3rdParty/Boost/boost/iterator/iterator_adaptor.hpp b/3rdParty/Boost/boost/iterator/iterator_adaptor.hpp deleted file mode 100644 index 27b08ff..0000000 --- a/3rdParty/Boost/boost/iterator/iterator_adaptor.hpp +++ /dev/null @@ -1,371 +0,0 @@ -// (C) Copyright David Abrahams 2002. -// (C) Copyright Jeremy Siek 2002. -// (C) Copyright Thomas Witt 2002. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_ITERATOR_ADAPTOR_23022003THW_HPP -#define BOOST_ITERATOR_ADAPTOR_23022003THW_HPP - -#include <boost/static_assert.hpp> -#include <boost/iterator.hpp> -#include <boost/detail/iterator.hpp> - -#include <boost/iterator/iterator_categories.hpp> -#include <boost/iterator/iterator_facade.hpp> -#include <boost/iterator/detail/enable_if.hpp> - -#include <boost/mpl/and.hpp> -#include <boost/mpl/not.hpp> -#include <boost/mpl/or.hpp> - -#include <boost/type_traits/is_same.hpp> -#include <boost/type_traits/is_convertible.hpp> - -#ifdef BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY -# include <boost/type_traits/remove_reference.hpp> - -# if BOOST_WORKAROUND(__CODEGEARC__, BOOST_TESTED_AT(0x610)) -# include <boost/type_traits/add_reference.hpp> -# endif - -#else -# include <boost/type_traits/add_reference.hpp> -#endif - -#include <boost/iterator/detail/config_def.hpp> - -#include <boost/iterator/iterator_traits.hpp> - -namespace boost -{ - // Used as a default template argument internally, merely to - // indicate "use the default", this can also be passed by users - // explicitly in order to specify that the default should be used. - struct use_default; - -# ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - // the incompleteness of use_default causes massive problems for - // is_convertible (naturally). This workaround is fortunately not - // needed for vc6/vc7. - template<class To> - struct is_convertible<use_default,To> - : mpl::false_ {}; -# endif - - namespace detail - { - - // - // Result type used in enable_if_convertible meta function. - // This can be an incomplete type, as only pointers to - // enable_if_convertible< ... >::type are used. - // We could have used void for this, but conversion to - // void* is just to easy. - // - struct enable_type; - } - - - // - // enable_if for use in adapted iterators constructors. - // - // In order to provide interoperability between adapted constant and - // mutable iterators, adapted iterators will usually provide templated - // conversion constructors of the following form - // - // template <class BaseIterator> - // class adapted_iterator : - // public iterator_adaptor< adapted_iterator<Iterator>, Iterator > - // { - // public: - // - // ... - // - // template <class OtherIterator> - // adapted_iterator( - // OtherIterator const& it - // , typename enable_if_convertible<OtherIterator, Iterator>::type* = 0); - // - // ... - // }; - // - // enable_if_convertible is used to remove those overloads from the overload - // set that cannot be instantiated. For all practical purposes only overloads - // for constant/mutable interaction will remain. This has the advantage that - // meta functions like boost::is_convertible do not return false positives, - // as they can only look at the signature of the conversion constructor - // and not at the actual instantiation. - // - // enable_if_interoperable can be safely used in user code. It falls back to - // always enabled for compilers that don't support enable_if or is_convertible. - // There is no need for compiler specific workarounds in user code. - // - // The operators implementation relies on boost::is_convertible not returning - // false positives for user/library defined iterator types. See comments - // on operator implementation for consequences. - // -# if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) - - template<typename From, typename To> - struct enable_if_convertible - { - typedef typename mpl::if_< - mpl::or_< - is_same<From,To> - , is_convertible<From, To> - > - , boost::detail::enable_type - , int& - >::type type; - }; - -# elif defined(BOOST_NO_IS_CONVERTIBLE) || defined(BOOST_NO_SFINAE) - - template <class From, class To> - struct enable_if_convertible - { - typedef boost::detail::enable_type type; - }; - -# elif BOOST_WORKAROUND(_MSC_FULL_VER, BOOST_TESTED_AT(13102292)) && BOOST_MSVC > 1300 - - // For some reason vc7.1 needs us to "cut off" instantiation - // of is_convertible in a few cases. - template<typename From, typename To> - struct enable_if_convertible - : iterators::enable_if< - mpl::or_< - is_same<From,To> - , is_convertible<From, To> - > - , boost::detail::enable_type - > - {}; - -# else - - template<typename From, typename To> - struct enable_if_convertible - : iterators::enable_if< - is_convertible<From, To> - , boost::detail::enable_type - > - {}; - -# endif - - // - // Default template argument handling for iterator_adaptor - // - namespace detail - { - // If T is use_default, return the result of invoking - // DefaultNullaryFn, otherwise return T. - template <class T, class DefaultNullaryFn> - struct ia_dflt_help - : mpl::eval_if< - is_same<T, use_default> - , DefaultNullaryFn - , mpl::identity<T> - > - { - }; - - // A metafunction which computes an iterator_adaptor's base class, - // a specialization of iterator_facade. - template < - class Derived - , class Base - , class Value - , class Traversal - , class Reference - , class Difference - > - struct iterator_adaptor_base - { - typedef iterator_facade< - Derived - -# ifdef BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY - , typename boost::detail::ia_dflt_help< - Value - , mpl::eval_if< - is_same<Reference,use_default> - , iterator_value<Base> - , remove_reference<Reference> - > - >::type -# else - , typename boost::detail::ia_dflt_help< - Value, iterator_value<Base> - >::type -# endif - - , typename boost::detail::ia_dflt_help< - Traversal - , iterator_traversal<Base> - >::type - - , typename boost::detail::ia_dflt_help< - Reference - , mpl::eval_if< - is_same<Value,use_default> - , iterator_reference<Base> - , add_reference<Value> - > - >::type - - , typename boost::detail::ia_dflt_help< - Difference, iterator_difference<Base> - >::type - > - type; - }; - - // workaround for aC++ CR JAGaf33512 - template <class Tr1, class Tr2> - inline void iterator_adaptor_assert_traversal () - { - BOOST_STATIC_ASSERT((is_convertible<Tr1, Tr2>::value)); - } - } - - // - // Iterator Adaptor - // - // The parameter ordering changed slightly with respect to former - // versions of iterator_adaptor The idea is that when the user needs - // to fiddle with the reference type it is highly likely that the - // iterator category has to be adjusted as well. Any of the - // following four template arguments may be ommitted or explicitly - // replaced by use_default. - // - // Value - if supplied, the value_type of the resulting iterator, unless - // const. If const, a conforming compiler strips constness for the - // value_type. If not supplied, iterator_traits<Base>::value_type is used - // - // Category - the traversal category of the resulting iterator. If not - // supplied, iterator_traversal<Base>::type is used. - // - // Reference - the reference type of the resulting iterator, and in - // particular, the result type of operator*(). If not supplied but - // Value is supplied, Value& is used. Otherwise - // iterator_traits<Base>::reference is used. - // - // Difference - the difference_type of the resulting iterator. If not - // supplied, iterator_traits<Base>::difference_type is used. - // - template < - class Derived - , class Base - , class Value = use_default - , class Traversal = use_default - , class Reference = use_default - , class Difference = use_default - > - class iterator_adaptor - : public boost::detail::iterator_adaptor_base< - Derived, Base, Value, Traversal, Reference, Difference - >::type - { - friend class iterator_core_access; - - protected: - typedef typename boost::detail::iterator_adaptor_base< - Derived, Base, Value, Traversal, Reference, Difference - >::type super_t; - public: - iterator_adaptor() {} - - explicit iterator_adaptor(Base const &iter) - : m_iterator(iter) - { - } - - typedef Base base_type; - - Base const& base() const - { return m_iterator; } - - protected: - // for convenience in derived classes - typedef iterator_adaptor<Derived,Base,Value,Traversal,Reference,Difference> iterator_adaptor_; - - // - // lvalue access to the Base object for Derived - // - Base const& base_reference() const - { return m_iterator; } - - Base& base_reference() - { return m_iterator; } - - private: - // - // Core iterator interface for iterator_facade. This is private - // to prevent temptation for Derived classes to use it, which - // will often result in an error. Derived classes should use - // base_reference(), above, to get direct access to m_iterator. - // - typename super_t::reference dereference() const - { return *m_iterator; } - - template < - class OtherDerived, class OtherIterator, class V, class C, class R, class D - > - bool equal(iterator_adaptor<OtherDerived, OtherIterator, V, C, R, D> const& x) const - { - // Maybe readd with same_distance - // BOOST_STATIC_ASSERT( - // (detail::same_category_and_difference<Derived,OtherDerived>::value) - // ); - return m_iterator == x.base(); - } - - typedef typename iterator_category_to_traversal< - typename super_t::iterator_category - >::type my_traversal; - -# define BOOST_ITERATOR_ADAPTOR_ASSERT_TRAVERSAL(cat) \ - boost::detail::iterator_adaptor_assert_traversal<my_traversal, cat>(); - - void advance(typename super_t::difference_type n) - { - BOOST_ITERATOR_ADAPTOR_ASSERT_TRAVERSAL(random_access_traversal_tag) - m_iterator += n; - } - - void increment() { ++m_iterator; } - - void decrement() - { - BOOST_ITERATOR_ADAPTOR_ASSERT_TRAVERSAL(bidirectional_traversal_tag) - --m_iterator; - } - - template < - class OtherDerived, class OtherIterator, class V, class C, class R, class D - > - typename super_t::difference_type distance_to( - iterator_adaptor<OtherDerived, OtherIterator, V, C, R, D> const& y) const - { - BOOST_ITERATOR_ADAPTOR_ASSERT_TRAVERSAL(random_access_traversal_tag) - // Maybe readd with same_distance - // BOOST_STATIC_ASSERT( - // (detail::same_category_and_difference<Derived,OtherDerived>::value) - // ); - return y.base() - m_iterator; - } - -# undef BOOST_ITERATOR_ADAPTOR_ASSERT_TRAVERSAL - - private: // data members - Base m_iterator; - }; - -} // namespace boost - -#include <boost/iterator/detail/config_undef.hpp> - -#endif // BOOST_ITERATOR_ADAPTOR_23022003THW_HPP diff --git a/3rdParty/Boost/boost/iterator/iterator_categories.hpp b/3rdParty/Boost/boost/iterator/iterator_categories.hpp deleted file mode 100644 index 1740d98..0000000 --- a/3rdParty/Boost/boost/iterator/iterator_categories.hpp +++ /dev/null @@ -1,188 +0,0 @@ -// (C) Copyright Jeremy Siek 2002. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_ITERATOR_CATEGORIES_HPP -# define BOOST_ITERATOR_CATEGORIES_HPP - -# include <boost/config.hpp> -# include <boost/detail/iterator.hpp> -# include <boost/iterator/detail/config_def.hpp> - -# include <boost/detail/workaround.hpp> - -# include <boost/mpl/eval_if.hpp> -# include <boost/mpl/identity.hpp> -# include <boost/mpl/placeholders.hpp> -# include <boost/mpl/aux_/lambda_support.hpp> - -# include <boost/type_traits/is_convertible.hpp> - -# include <boost/static_assert.hpp> - -namespace boost { - -// -// Traversal Categories -// - -struct no_traversal_tag {}; - -struct incrementable_traversal_tag - : no_traversal_tag -{ -// incrementable_traversal_tag() {} -// incrementable_traversal_tag(std::output_iterator_tag const&) {}; -}; - -struct single_pass_traversal_tag - : incrementable_traversal_tag -{ -// single_pass_traversal_tag() {} -// single_pass_traversal_tag(std::input_iterator_tag const&) {}; -}; - -struct forward_traversal_tag - : single_pass_traversal_tag -{ -// forward_traversal_tag() {} -// forward_traversal_tag(std::forward_iterator_tag const&) {}; -}; - -struct bidirectional_traversal_tag - : forward_traversal_tag -{ -// bidirectional_traversal_tag() {}; -// bidirectional_traversal_tag(std::bidirectional_iterator_tag const&) {}; -}; - -struct random_access_traversal_tag - : bidirectional_traversal_tag -{ -// random_access_traversal_tag() {}; -// random_access_traversal_tag(std::random_access_iterator_tag const&) {}; -}; - -namespace detail -{ - // - // Convert a "strictly old-style" iterator category to a traversal - // tag. This is broken out into a separate metafunction to reduce - // the cost of instantiating iterator_category_to_traversal, below, - // for new-style types. - // - template <class Cat> - struct old_category_to_traversal - : mpl::eval_if< - is_convertible<Cat,std::random_access_iterator_tag> - , mpl::identity<random_access_traversal_tag> - , mpl::eval_if< - is_convertible<Cat,std::bidirectional_iterator_tag> - , mpl::identity<bidirectional_traversal_tag> - , mpl::eval_if< - is_convertible<Cat,std::forward_iterator_tag> - , mpl::identity<forward_traversal_tag> - , mpl::eval_if< - is_convertible<Cat,std::input_iterator_tag> - , mpl::identity<single_pass_traversal_tag> - , mpl::eval_if< - is_convertible<Cat,std::output_iterator_tag> - , mpl::identity<incrementable_traversal_tag> - , void - > - > - > - > - > - {}; - -# if BOOST_WORKAROUND(BOOST_MSVC, < 1300) - template <> - struct old_category_to_traversal<int> - { - typedef int type; - }; -# endif - - template <class Traversal> - struct pure_traversal_tag - : mpl::eval_if< - is_convertible<Traversal,random_access_traversal_tag> - , mpl::identity<random_access_traversal_tag> - , mpl::eval_if< - is_convertible<Traversal,bidirectional_traversal_tag> - , mpl::identity<bidirectional_traversal_tag> - , mpl::eval_if< - is_convertible<Traversal,forward_traversal_tag> - , mpl::identity<forward_traversal_tag> - , mpl::eval_if< - is_convertible<Traversal,single_pass_traversal_tag> - , mpl::identity<single_pass_traversal_tag> - , mpl::eval_if< - is_convertible<Traversal,incrementable_traversal_tag> - , mpl::identity<incrementable_traversal_tag> - , void - > - > - > - > - > - { - }; - -# if BOOST_WORKAROUND(BOOST_MSVC, < 1300) - template <> - struct pure_traversal_tag<int> - { - typedef int type; - }; -# endif - -} // namespace detail - - -// -// Convert an iterator category into a traversal tag -// -template <class Cat> -struct iterator_category_to_traversal - : mpl::eval_if< // if already convertible to a traversal tag, we're done. - is_convertible<Cat,incrementable_traversal_tag> - , mpl::identity<Cat> - , boost::detail::old_category_to_traversal<Cat> - > -{}; - -// Trait to get an iterator's traversal category -template <class Iterator = mpl::_1> -struct iterator_traversal - : iterator_category_to_traversal< - typename boost::detail::iterator_traits<Iterator>::iterator_category - > -{}; - -# ifdef BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT -// Hack because BOOST_MPL_AUX_LAMBDA_SUPPORT doesn't seem to work -// out well. Instantiating the nested apply template also -// requires instantiating iterator_traits on the -// placeholder. Instead we just specialize it as a metafunction -// class. -template <> -struct iterator_traversal<mpl::_1> -{ - template <class T> - struct apply : iterator_traversal<T> - {}; -}; -template <> -struct iterator_traversal<mpl::_> - : iterator_traversal<mpl::_1> -{}; -# endif - -} // namespace boost - -#include <boost/iterator/detail/config_undef.hpp> - -#endif // BOOST_ITERATOR_CATEGORIES_HPP diff --git a/3rdParty/Boost/boost/iterator/iterator_facade.hpp b/3rdParty/Boost/boost/iterator/iterator_facade.hpp deleted file mode 100644 index 967d60f..0000000 --- a/3rdParty/Boost/boost/iterator/iterator_facade.hpp +++ /dev/null @@ -1,878 +0,0 @@ -// (C) Copyright David Abrahams 2002. -// (C) Copyright Jeremy Siek 2002. -// (C) Copyright Thomas Witt 2002. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_ITERATOR_FACADE_23022003THW_HPP -#define BOOST_ITERATOR_FACADE_23022003THW_HPP - -#include <boost/iterator.hpp> -#include <boost/iterator/interoperable.hpp> -#include <boost/iterator/iterator_traits.hpp> - -#include <boost/iterator/detail/facade_iterator_category.hpp> -#include <boost/iterator/detail/enable_if.hpp> - -#include <boost/implicit_cast.hpp> -#include <boost/static_assert.hpp> - -#include <boost/type_traits/is_same.hpp> -#include <boost/type_traits/add_const.hpp> -#include <boost/type_traits/add_pointer.hpp> -#include <boost/type_traits/remove_const.hpp> -#include <boost/type_traits/remove_reference.hpp> -#include <boost/type_traits/is_convertible.hpp> -#include <boost/type_traits/is_pod.hpp> - -#include <boost/mpl/eval_if.hpp> -#include <boost/mpl/if.hpp> -#include <boost/mpl/or.hpp> -#include <boost/mpl/and.hpp> -#include <boost/mpl/not.hpp> -#include <boost/mpl/always.hpp> -#include <boost/mpl/apply.hpp> -#include <boost/mpl/identity.hpp> - -#include <boost/iterator/detail/config_def.hpp> // this goes last - -namespace boost -{ - // This forward declaration is required for the friend declaration - // in iterator_core_access - template <class I, class V, class TC, class R, class D> class iterator_facade; - - namespace detail - { - // A binary metafunction class that always returns bool. VC6 - // ICEs on mpl::always<bool>, probably because of the default - // parameters. - struct always_bool2 - { - template <class T, class U> - struct apply - { - typedef bool type; - }; - }; - - // - // enable if for use in operator implementation. - // - template < - class Facade1 - , class Facade2 - , class Return - > - struct enable_if_interoperable -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) - { - typedef typename mpl::if_< - mpl::or_< - is_convertible<Facade1, Facade2> - , is_convertible<Facade2, Facade1> - > - , Return - , int[3] - >::type type; - }; -#else - : ::boost::iterators::enable_if< - mpl::or_< - is_convertible<Facade1, Facade2> - , is_convertible<Facade2, Facade1> - > - , Return - > - {}; -#endif - - // - // Generates associated types for an iterator_facade with the - // given parameters. - // - template < - class ValueParam - , class CategoryOrTraversal - , class Reference - , class Difference - > - struct iterator_facade_types - { - typedef typename facade_iterator_category< - CategoryOrTraversal, ValueParam, Reference - >::type iterator_category; - - typedef typename remove_const<ValueParam>::type value_type; - - typedef typename mpl::eval_if< - boost::detail::iterator_writability_disabled<ValueParam,Reference> - , add_pointer<const value_type> - , add_pointer<value_type> - >::type pointer; - -# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \ - && (BOOST_WORKAROUND(_STLPORT_VERSION, BOOST_TESTED_AT(0x452)) \ - || BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, BOOST_TESTED_AT(310))) \ - || BOOST_WORKAROUND(BOOST_RWSTD_VER, BOOST_TESTED_AT(0x20101)) \ - || BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, <= 310) - - // To interoperate with some broken library/compiler - // combinations, user-defined iterators must be derived from - // std::iterator. It is possible to implement a standard - // library for broken compilers without this limitation. -# define BOOST_ITERATOR_FACADE_NEEDS_ITERATOR_BASE 1 - - typedef - iterator<iterator_category, value_type, Difference, pointer, Reference> - base; -# endif - }; - - // iterators whose dereference operators reference the same value - // for all iterators into the same sequence (like many input - // iterators) need help with their postfix ++: the referenced - // value must be read and stored away before the increment occurs - // so that *a++ yields the originally referenced element and not - // the next one. - template <class Iterator> - class postfix_increment_proxy - { - typedef typename iterator_value<Iterator>::type value_type; - public: - explicit postfix_increment_proxy(Iterator const& x) - : stored_value(*x) - {} - - // Returning a mutable reference allows nonsense like - // (*r++).mutate(), but it imposes fewer assumptions about the - // behavior of the value_type. In particular, recall taht - // (*r).mutate() is legal if operator* returns by value. - value_type& - operator*() const - { - return this->stored_value; - } - private: - mutable value_type stored_value; - }; - - // - // In general, we can't determine that such an iterator isn't - // writable -- we also need to store a copy of the old iterator so - // that it can be written into. - template <class Iterator> - class writable_postfix_increment_proxy - { - typedef typename iterator_value<Iterator>::type value_type; - public: - explicit writable_postfix_increment_proxy(Iterator const& x) - : stored_value(*x) - , stored_iterator(x) - {} - - // Dereferencing must return a proxy so that both *r++ = o and - // value_type(*r++) can work. In this case, *r is the same as - // *r++, and the conversion operator below is used to ensure - // readability. - writable_postfix_increment_proxy const& - operator*() const - { - return *this; - } - - // Provides readability of *r++ - operator value_type&() const - { - return stored_value; - } - - // Provides writability of *r++ - template <class T> - T const& operator=(T const& x) const - { - *this->stored_iterator = x; - return x; - } - - // This overload just in case only non-const objects are writable - template <class T> - T& operator=(T& x) const - { - *this->stored_iterator = x; - return x; - } - - // Provides X(r++) - operator Iterator const&() const - { - return stored_iterator; - } - - private: - mutable value_type stored_value; - Iterator stored_iterator; - }; - -# ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - - template <class Reference, class Value> - struct is_non_proxy_reference_impl - { - static Reference r; - - template <class R> - static typename mpl::if_< - is_convertible< - R const volatile* - , Value const volatile* - > - , char[1] - , char[2] - >::type& helper(R const&); - - BOOST_STATIC_CONSTANT(bool, value = sizeof(helper(r)) == 1); - }; - - template <class Reference, class Value> - struct is_non_proxy_reference - : mpl::bool_< - is_non_proxy_reference_impl<Reference, Value>::value - > - {}; -# else - template <class Reference, class Value> - struct is_non_proxy_reference - : is_convertible< - typename remove_reference<Reference>::type - const volatile* - , Value const volatile* - > - {}; -# endif - - // A metafunction to choose the result type of postfix ++ - // - // Because the C++98 input iterator requirements say that *r++ has - // type T (value_type), implementations of some standard - // algorithms like lexicographical_compare may use constructions - // like: - // - // *r++ < *s++ - // - // If *r++ returns a proxy (as required if r is writable but not - // multipass), this sort of expression will fail unless the proxy - // supports the operator<. Since there are any number of such - // operations, we're not going to try to support them. Therefore, - // even if r++ returns a proxy, *r++ will only return a proxy if - // *r also returns a proxy. - template <class Iterator, class Value, class Reference, class CategoryOrTraversal> - struct postfix_increment_result - : mpl::eval_if< - mpl::and_< - // A proxy is only needed for readable iterators - is_convertible<Reference,Value const&> - - // No multipass iterator can have values that disappear - // before positions can be re-visited - , mpl::not_< - is_convertible< - typename iterator_category_to_traversal<CategoryOrTraversal>::type - , forward_traversal_tag - > - > - > - , mpl::if_< - is_non_proxy_reference<Reference,Value> - , postfix_increment_proxy<Iterator> - , writable_postfix_increment_proxy<Iterator> - > - , mpl::identity<Iterator> - > - {}; - - // operator->() needs special support for input iterators to strictly meet the - // standard's requirements. If *i is not a reference type, we must still - // produce a lvalue to which a pointer can be formed. We do that by - // returning an instantiation of this special proxy class template. - template <class T> - struct operator_arrow_proxy - { - operator_arrow_proxy(T const* px) : m_value(*px) {} - T* operator->() const { return &m_value; } - // This function is needed for MWCW and BCC, which won't call operator-> - // again automatically per 13.3.1.2 para 8 - operator T*() const { return &m_value; } - mutable T m_value; - }; - - // A metafunction that gets the result type for operator->. Also - // has a static function make() which builds the result from a - // Reference - template <class ValueType, class Reference, class Pointer> - struct operator_arrow_result - { - // CWPro8.3 won't accept "operator_arrow_result::type", and we - // need that type below, so metafunction forwarding would be a - // losing proposition here. - typedef typename mpl::if_< - is_reference<Reference> - , Pointer - , operator_arrow_proxy<ValueType> - >::type type; - - static type make(Reference x) - { - return implicit_cast<type>(&x); - } - }; - -# if BOOST_WORKAROUND(BOOST_MSVC, < 1300) - // Deal with ETI - template<> - struct operator_arrow_result<int, int, int> - { - typedef int type; - }; -# endif - - // A proxy return type for operator[], needed to deal with - // iterators that may invalidate referents upon destruction. - // Consider the temporary iterator in *(a + n) - template <class Iterator> - class operator_brackets_proxy - { - // Iterator is actually an iterator_facade, so we do not have to - // go through iterator_traits to access the traits. - typedef typename Iterator::reference reference; - typedef typename Iterator::value_type value_type; - - public: - operator_brackets_proxy(Iterator const& iter) - : m_iter(iter) - {} - - operator reference() const - { - return *m_iter; - } - - operator_brackets_proxy& operator=(value_type const& val) - { - *m_iter = val; - return *this; - } - - private: - Iterator m_iter; - }; - - // A metafunction that determines whether operator[] must return a - // proxy, or whether it can simply return a copy of the value_type. - template <class ValueType, class Reference> - struct use_operator_brackets_proxy - : mpl::not_< - mpl::and_< - // Really we want an is_copy_constructible trait here, - // but is_POD will have to suffice in the meantime. - boost::is_POD<ValueType> - , iterator_writability_disabled<ValueType,Reference> - > - > - {}; - - template <class Iterator, class Value, class Reference> - struct operator_brackets_result - { - typedef typename mpl::if_< - use_operator_brackets_proxy<Value,Reference> - , operator_brackets_proxy<Iterator> - , Value - >::type type; - }; - - template <class Iterator> - operator_brackets_proxy<Iterator> make_operator_brackets_result(Iterator const& iter, mpl::true_) - { - return operator_brackets_proxy<Iterator>(iter); - } - - template <class Iterator> - typename Iterator::value_type make_operator_brackets_result(Iterator const& iter, mpl::false_) - { - return *iter; - } - - struct choose_difference_type - { - template <class I1, class I2> - struct apply - : -# ifdef BOOST_NO_ONE_WAY_ITERATOR_INTEROP - iterator_difference<I1> -# elif BOOST_WORKAROUND(BOOST_MSVC, < 1300) - mpl::if_< - is_convertible<I2,I1> - , typename I1::difference_type - , typename I2::difference_type - > -# else - mpl::eval_if< - is_convertible<I2,I1> - , iterator_difference<I1> - , iterator_difference<I2> - > -# endif - {}; - - }; - } // namespace detail - - - // Macros which describe the declarations of binary operators -# ifdef BOOST_NO_STRICT_ITERATOR_INTEROPERABILITY -# define BOOST_ITERATOR_FACADE_INTEROP_HEAD(prefix, op, result_type) \ - template < \ - class Derived1, class V1, class TC1, class Reference1, class Difference1 \ - , class Derived2, class V2, class TC2, class Reference2, class Difference2 \ - > \ - prefix typename mpl::apply2<result_type,Derived1,Derived2>::type \ - operator op( \ - iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs \ - , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs) -# else -# define BOOST_ITERATOR_FACADE_INTEROP_HEAD(prefix, op, result_type) \ - template < \ - class Derived1, class V1, class TC1, class Reference1, class Difference1 \ - , class Derived2, class V2, class TC2, class Reference2, class Difference2 \ - > \ - prefix typename boost::detail::enable_if_interoperable< \ - Derived1, Derived2 \ - , typename mpl::apply2<result_type,Derived1,Derived2>::type \ - >::type \ - operator op( \ - iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs \ - , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs) -# endif - -# define BOOST_ITERATOR_FACADE_PLUS_HEAD(prefix,args) \ - template <class Derived, class V, class TC, class R, class D> \ - prefix Derived operator+ args - - // - // Helper class for granting access to the iterator core interface. - // - // The simple core interface is used by iterator_facade. The core - // interface of a user/library defined iterator type should not be made public - // so that it does not clutter the public interface. Instead iterator_core_access - // should be made friend so that iterator_facade can access the core - // interface through iterator_core_access. - // - class iterator_core_access - { -# if defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS) - // Tasteless as this may seem, making all members public allows member templates - // to work in the absence of member template friends. - public: -# else - - template <class I, class V, class TC, class R, class D> friend class iterator_facade; - -# define BOOST_ITERATOR_FACADE_RELATION(op) \ - BOOST_ITERATOR_FACADE_INTEROP_HEAD(friend,op, boost::detail::always_bool2); - - BOOST_ITERATOR_FACADE_RELATION(==) - BOOST_ITERATOR_FACADE_RELATION(!=) - - BOOST_ITERATOR_FACADE_RELATION(<) - BOOST_ITERATOR_FACADE_RELATION(>) - BOOST_ITERATOR_FACADE_RELATION(<=) - BOOST_ITERATOR_FACADE_RELATION(>=) -# undef BOOST_ITERATOR_FACADE_RELATION - - BOOST_ITERATOR_FACADE_INTEROP_HEAD( - friend, -, boost::detail::choose_difference_type) - ; - - BOOST_ITERATOR_FACADE_PLUS_HEAD( - friend inline - , (iterator_facade<Derived, V, TC, R, D> const& - , typename Derived::difference_type) - ) - ; - - BOOST_ITERATOR_FACADE_PLUS_HEAD( - friend inline - , (typename Derived::difference_type - , iterator_facade<Derived, V, TC, R, D> const&) - ) - ; - -# endif - - template <class Facade> - static typename Facade::reference dereference(Facade const& f) - { - return f.dereference(); - } - - template <class Facade> - static void increment(Facade& f) - { - f.increment(); - } - - template <class Facade> - static void decrement(Facade& f) - { - f.decrement(); - } - - template <class Facade1, class Facade2> - static bool equal(Facade1 const& f1, Facade2 const& f2, mpl::true_) - { - return f1.equal(f2); - } - - template <class Facade1, class Facade2> - static bool equal(Facade1 const& f1, Facade2 const& f2, mpl::false_) - { - return f2.equal(f1); - } - - template <class Facade> - static void advance(Facade& f, typename Facade::difference_type n) - { - f.advance(n); - } - - template <class Facade1, class Facade2> - static typename Facade1::difference_type distance_from( - Facade1 const& f1, Facade2 const& f2, mpl::true_) - { - return -f1.distance_to(f2); - } - - template <class Facade1, class Facade2> - static typename Facade2::difference_type distance_from( - Facade1 const& f1, Facade2 const& f2, mpl::false_) - { - return f2.distance_to(f1); - } - - // - // Curiously Recurring Template interface. - // - template <class I, class V, class TC, class R, class D> - static I& derived(iterator_facade<I,V,TC,R,D>& facade) - { - return *static_cast<I*>(&facade); - } - - template <class I, class V, class TC, class R, class D> - static I const& derived(iterator_facade<I,V,TC,R,D> const& facade) - { - return *static_cast<I const*>(&facade); - } - - private: - // objects of this class are useless - iterator_core_access(); //undefined - }; - - // - // iterator_facade - use as a public base class for defining new - // standard-conforming iterators. - // - template < - class Derived // The derived iterator type being constructed - , class Value - , class CategoryOrTraversal - , class Reference = Value& - , class Difference = std::ptrdiff_t - > - class iterator_facade -# ifdef BOOST_ITERATOR_FACADE_NEEDS_ITERATOR_BASE - : public boost::detail::iterator_facade_types< - Value, CategoryOrTraversal, Reference, Difference - >::base -# undef BOOST_ITERATOR_FACADE_NEEDS_ITERATOR_BASE -# endif - { - private: - // - // Curiously Recurring Template interface. - // - Derived& derived() - { - return *static_cast<Derived*>(this); - } - - Derived const& derived() const - { - return *static_cast<Derived const*>(this); - } - - typedef boost::detail::iterator_facade_types< - Value, CategoryOrTraversal, Reference, Difference - > associated_types; - - protected: - // For use by derived classes - typedef iterator_facade<Derived,Value,CategoryOrTraversal,Reference,Difference> iterator_facade_; - - public: - - typedef typename associated_types::value_type value_type; - typedef Reference reference; - typedef Difference difference_type; - typedef typename associated_types::pointer pointer; - typedef typename associated_types::iterator_category iterator_category; - - reference operator*() const - { - return iterator_core_access::dereference(this->derived()); - } - - typename boost::detail::operator_arrow_result< - value_type - , reference - , pointer - >::type - operator->() const - { - return boost::detail::operator_arrow_result< - value_type - , reference - , pointer - >::make(*this->derived()); - } - - typename boost::detail::operator_brackets_result<Derived,Value,reference>::type - operator[](difference_type n) const - { - typedef boost::detail::use_operator_brackets_proxy<Value,Reference> use_proxy; - - return boost::detail::make_operator_brackets_result<Derived>( - this->derived() + n - , use_proxy() - ); - } - - Derived& operator++() - { - iterator_core_access::increment(this->derived()); - return this->derived(); - } - -# if BOOST_WORKAROUND(BOOST_MSVC, < 1300) - typename boost::detail::postfix_increment_result<Derived,Value,Reference,CategoryOrTraversal>::type - operator++(int) - { - typename boost::detail::postfix_increment_result<Derived,Value,Reference,CategoryOrTraversal>::type - tmp(this->derived()); - ++*this; - return tmp; - } -# endif - - Derived& operator--() - { - iterator_core_access::decrement(this->derived()); - return this->derived(); - } - - Derived operator--(int) - { - Derived tmp(this->derived()); - --*this; - return tmp; - } - - Derived& operator+=(difference_type n) - { - iterator_core_access::advance(this->derived(), n); - return this->derived(); - } - - Derived& operator-=(difference_type n) - { - iterator_core_access::advance(this->derived(), -n); - return this->derived(); - } - - Derived operator-(difference_type x) const - { - Derived result(this->derived()); - return result -= x; - } - -# if BOOST_WORKAROUND(BOOST_MSVC, < 1300) - // There appears to be a bug which trashes the data of classes - // derived from iterator_facade when they are assigned unless we - // define this assignment operator. This bug is only revealed - // (so far) in STLPort debug mode, but it's clearly a codegen - // problem so we apply the workaround for all MSVC6. - iterator_facade& operator=(iterator_facade const&) - { - return *this; - } -# endif - }; - -# if !BOOST_WORKAROUND(BOOST_MSVC, < 1300) - template <class I, class V, class TC, class R, class D> - inline typename boost::detail::postfix_increment_result<I,V,R,TC>::type - operator++( - iterator_facade<I,V,TC,R,D>& i - , int - ) - { - typename boost::detail::postfix_increment_result<I,V,R,TC>::type - tmp(*static_cast<I*>(&i)); - - ++i; - - return tmp; - } -# endif - - - // - // Comparison operator implementation. The library supplied operators - // enables the user to provide fully interoperable constant/mutable - // iterator types. I.e. the library provides all operators - // for all mutable/constant iterator combinations. - // - // Note though that this kind of interoperability for constant/mutable - // iterators is not required by the standard for container iterators. - // All the standard asks for is a conversion mutable -> constant. - // Most standard library implementations nowadays provide fully interoperable - // iterator implementations, but there are still heavily used implementations - // that do not provide them. (Actually it's even worse, they do not provide - // them for only a few iterators.) - // - // ?? Maybe a BOOST_ITERATOR_NO_FULL_INTEROPERABILITY macro should - // enable the user to turn off mixed type operators - // - // The library takes care to provide only the right operator overloads. - // I.e. - // - // bool operator==(Iterator, Iterator); - // bool operator==(ConstIterator, Iterator); - // bool operator==(Iterator, ConstIterator); - // bool operator==(ConstIterator, ConstIterator); - // - // ... - // - // In order to do so it uses c++ idioms that are not yet widely supported - // by current compiler releases. The library is designed to degrade gracefully - // in the face of compiler deficiencies. In general compiler - // deficiencies result in less strict error checking and more obscure - // error messages, functionality is not affected. - // - // For full operation compiler support for "Substitution Failure Is Not An Error" - // (aka. enable_if) and boost::is_convertible is required. - // - // The following problems occur if support is lacking. - // - // Pseudo code - // - // --------------- - // AdaptorA<Iterator1> a1; - // AdaptorA<Iterator2> a2; - // - // // This will result in a no such overload error in full operation - // // If enable_if or is_convertible is not supported - // // The instantiation will fail with an error hopefully indicating that - // // there is no operator== for Iterator1, Iterator2 - // // The same will happen if no enable_if is used to remove - // // false overloads from the templated conversion constructor - // // of AdaptorA. - // - // a1 == a2; - // ---------------- - // - // AdaptorA<Iterator> a; - // AdaptorB<Iterator> b; - // - // // This will result in a no such overload error in full operation - // // If enable_if is not supported the static assert used - // // in the operator implementation will fail. - // // This will accidently work if is_convertible is not supported. - // - // a == b; - // ---------------- - // - -# ifdef BOOST_NO_ONE_WAY_ITERATOR_INTEROP -# define BOOST_ITERATOR_CONVERTIBLE(a,b) mpl::true_() -# else -# define BOOST_ITERATOR_CONVERTIBLE(a,b) is_convertible<a,b>() -# endif - -# define BOOST_ITERATOR_FACADE_INTEROP(op, result_type, return_prefix, base_op) \ - BOOST_ITERATOR_FACADE_INTEROP_HEAD(inline, op, result_type) \ - { \ - /* For those compilers that do not support enable_if */ \ - BOOST_STATIC_ASSERT(( \ - is_interoperable< Derived1, Derived2 >::value \ - )); \ - return_prefix iterator_core_access::base_op( \ - *static_cast<Derived1 const*>(&lhs) \ - , *static_cast<Derived2 const*>(&rhs) \ - , BOOST_ITERATOR_CONVERTIBLE(Derived2,Derived1) \ - ); \ - } - -# define BOOST_ITERATOR_FACADE_RELATION(op, return_prefix, base_op) \ - BOOST_ITERATOR_FACADE_INTEROP( \ - op \ - , boost::detail::always_bool2 \ - , return_prefix \ - , base_op \ - ) - - BOOST_ITERATOR_FACADE_RELATION(==, return, equal) - BOOST_ITERATOR_FACADE_RELATION(!=, return !, equal) - - BOOST_ITERATOR_FACADE_RELATION(<, return 0 >, distance_from) - BOOST_ITERATOR_FACADE_RELATION(>, return 0 <, distance_from) - BOOST_ITERATOR_FACADE_RELATION(<=, return 0 >=, distance_from) - BOOST_ITERATOR_FACADE_RELATION(>=, return 0 <=, distance_from) -# undef BOOST_ITERATOR_FACADE_RELATION - - // operator- requires an additional part in the static assertion - BOOST_ITERATOR_FACADE_INTEROP( - - - , boost::detail::choose_difference_type - , return - , distance_from - ) -# undef BOOST_ITERATOR_FACADE_INTEROP -# undef BOOST_ITERATOR_FACADE_INTEROP_HEAD - -# define BOOST_ITERATOR_FACADE_PLUS(args) \ - BOOST_ITERATOR_FACADE_PLUS_HEAD(inline, args) \ - { \ - Derived tmp(static_cast<Derived const&>(i)); \ - return tmp += n; \ - } - -BOOST_ITERATOR_FACADE_PLUS(( - iterator_facade<Derived, V, TC, R, D> const& i - , typename Derived::difference_type n -)) - -BOOST_ITERATOR_FACADE_PLUS(( - typename Derived::difference_type n - , iterator_facade<Derived, V, TC, R, D> const& i -)) -# undef BOOST_ITERATOR_FACADE_PLUS -# undef BOOST_ITERATOR_FACADE_PLUS_HEAD - -} // namespace boost - -#include <boost/iterator/detail/config_undef.hpp> - -#endif // BOOST_ITERATOR_FACADE_23022003THW_HPP diff --git a/3rdParty/Boost/boost/iterator/iterator_traits.hpp b/3rdParty/Boost/boost/iterator/iterator_traits.hpp deleted file mode 100644 index 960970e..0000000 --- a/3rdParty/Boost/boost/iterator/iterator_traits.hpp +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright David Abrahams 2003. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -#ifndef ITERATOR_TRAITS_DWA200347_HPP -# define ITERATOR_TRAITS_DWA200347_HPP - -# include <boost/detail/iterator.hpp> -# include <boost/detail/workaround.hpp> - -namespace boost { - -// Unfortunately, g++ 2.95.x chokes when we define a class template -// iterator_category which has the same name as its -// std::iterator_category() function, probably due in part to the -// "std:: is visible globally" hack it uses. Use -// BOOST_ITERATOR_CATEGORY to write code that's portable to older -// GCCs. - -# if BOOST_WORKAROUND(__GNUC__, <= 2) -# define BOOST_ITERATOR_CATEGORY iterator_category_ -# else -# define BOOST_ITERATOR_CATEGORY iterator_category -# endif - - -template <class Iterator> -struct iterator_value -{ - typedef typename boost::detail::iterator_traits<Iterator>::value_type type; -}; - -template <class Iterator> -struct iterator_reference -{ - typedef typename boost::detail::iterator_traits<Iterator>::reference type; -}; - - -template <class Iterator> -struct iterator_pointer -{ - typedef typename boost::detail::iterator_traits<Iterator>::pointer type; -}; - -template <class Iterator> -struct iterator_difference -{ - typedef typename boost::detail::iterator_traits<Iterator>::difference_type type; -}; - -template <class Iterator> -struct BOOST_ITERATOR_CATEGORY -{ - typedef typename boost::detail::iterator_traits<Iterator>::iterator_category type; -}; - -# if BOOST_WORKAROUND(BOOST_MSVC, < 1300) -template <> -struct iterator_value<int> -{ - typedef void type; -}; - -template <> -struct iterator_reference<int> -{ - typedef void type; -}; - -template <> -struct iterator_pointer<int> -{ - typedef void type; -}; - -template <> -struct iterator_difference<int> -{ - typedef void type; -}; - -template <> -struct BOOST_ITERATOR_CATEGORY<int> -{ - typedef void type; -}; -# endif - -} // namespace boost::iterator - -#endif // ITERATOR_TRAITS_DWA200347_HPP diff --git a/3rdParty/Boost/boost/iterator/reverse_iterator.hpp b/3rdParty/Boost/boost/iterator/reverse_iterator.hpp deleted file mode 100644 index 97b6b48..0000000 --- a/3rdParty/Boost/boost/iterator/reverse_iterator.hpp +++ /dev/null @@ -1,69 +0,0 @@ -// (C) Copyright David Abrahams 2002. -// (C) Copyright Jeremy Siek 2002. -// (C) Copyright Thomas Witt 2002. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_REVERSE_ITERATOR_23022003THW_HPP -#define BOOST_REVERSE_ITERATOR_23022003THW_HPP - -#include <boost/iterator.hpp> -#include <boost/utility.hpp> -#include <boost/iterator/iterator_adaptor.hpp> - -namespace boost -{ - - // - // - // - template <class Iterator> - class reverse_iterator - : public iterator_adaptor< reverse_iterator<Iterator>, Iterator > - { - typedef iterator_adaptor< reverse_iterator<Iterator>, Iterator > super_t; - - friend class iterator_core_access; - - public: - reverse_iterator() {} - - explicit reverse_iterator(Iterator x) - : super_t(x) {} - - template<class OtherIterator> - reverse_iterator( - reverse_iterator<OtherIterator> const& r - , typename enable_if_convertible<OtherIterator, Iterator>::type* = 0 - ) - : super_t(r.base()) - {} - - private: - typename super_t::reference dereference() const { return *boost::prior(this->base()); } - - void increment() { --this->base_reference(); } - void decrement() { ++this->base_reference(); } - - void advance(typename super_t::difference_type n) - { - this->base_reference() += -n; - } - - template <class OtherIterator> - typename super_t::difference_type - distance_to(reverse_iterator<OtherIterator> const& y) const - { - return this->base_reference() - y.base(); - } - }; - - template <class BidirectionalIterator> - reverse_iterator<BidirectionalIterator> make_reverse_iterator(BidirectionalIterator x) - { - return reverse_iterator<BidirectionalIterator>(x); - } - -} // namespace boost - -#endif // BOOST_REVERSE_ITERATOR_23022003THW_HPP diff --git a/3rdParty/Boost/boost/iterator/transform_iterator.hpp b/3rdParty/Boost/boost/iterator/transform_iterator.hpp deleted file mode 100644 index e449a8b..0000000 --- a/3rdParty/Boost/boost/iterator/transform_iterator.hpp +++ /dev/null @@ -1,188 +0,0 @@ -// (C) Copyright David Abrahams 2002. -// (C) Copyright Jeremy Siek 2002. -// (C) Copyright Thomas Witt 2002. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_TRANSFORM_ITERATOR_23022003THW_HPP -#define BOOST_TRANSFORM_ITERATOR_23022003THW_HPP - -#include <boost/function.hpp> -#include <boost/iterator.hpp> -#include <boost/iterator/detail/enable_if.hpp> -#include <boost/iterator/iterator_adaptor.hpp> -#include <boost/iterator/iterator_categories.hpp> -#include <boost/mpl/not.hpp> -#include <boost/mpl/bool.hpp> -#include <boost/type_traits/function_traits.hpp> -#include <boost/type_traits/is_const.hpp> -#include <boost/type_traits/is_class.hpp> -#include <boost/type_traits/is_function.hpp> -#include <boost/type_traits/is_reference.hpp> -#include <boost/type_traits/remove_const.hpp> -#include <boost/type_traits/remove_reference.hpp> - -#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1310)) -# include <boost/type_traits/is_base_and_derived.hpp> - -#endif -#include <boost/iterator/detail/config_def.hpp> - - -namespace boost -{ - template <class UnaryFunction, class Iterator, class Reference = use_default, class Value = use_default> - class transform_iterator; - - namespace detail - { - - template <class UnaryFunc> - struct function_object_result - { - typedef typename UnaryFunc::result_type type; - }; - -#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - template <class Return, class Argument> - struct function_object_result<Return(*)(Argument)> - { - typedef Return type; - }; -#endif - - // Compute the iterator_adaptor instantiation to be used for transform_iterator - template <class UnaryFunc, class Iterator, class Reference, class Value> - struct transform_iterator_base - { - private: - // By default, dereferencing the iterator yields the same as - // the function. Do we need to adjust the way - // function_object_result is computed for the standard - // proposal (e.g. using Doug's result_of)? - typedef typename ia_dflt_help< - Reference - , function_object_result<UnaryFunc> - >::type reference; - - // To get the default for Value: remove any reference on the - // result type, but retain any constness to signal - // non-writability. Note that if we adopt Thomas' suggestion - // to key non-writability *only* on the Reference argument, - // we'd need to strip constness here as well. - typedef typename ia_dflt_help< - Value - , remove_reference<reference> - >::type cv_value_type; - - public: - typedef iterator_adaptor< - transform_iterator<UnaryFunc, Iterator, Reference, Value> - , Iterator - , cv_value_type - , use_default // Leave the traversal category alone - , reference - > type; - }; - } - - template <class UnaryFunc, class Iterator, class Reference, class Value> - class transform_iterator - : public boost::detail::transform_iterator_base<UnaryFunc, Iterator, Reference, Value>::type - { - typedef typename - boost::detail::transform_iterator_base<UnaryFunc, Iterator, Reference, Value>::type - super_t; - - friend class iterator_core_access; - - public: - transform_iterator() { } - - transform_iterator(Iterator const& x, UnaryFunc f) - : super_t(x), m_f(f) { } - - explicit transform_iterator(Iterator const& x) - : super_t(x) - { - // Pro8 is a little too aggressive about instantiating the - // body of this function. -#if !BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) - // don't provide this constructor if UnaryFunc is a - // function pointer type, since it will be 0. Too dangerous. - BOOST_STATIC_ASSERT(is_class<UnaryFunc>::value); -#endif - } - - template< - class OtherUnaryFunction - , class OtherIterator - , class OtherReference - , class OtherValue> - transform_iterator( - transform_iterator<OtherUnaryFunction, OtherIterator, OtherReference, OtherValue> const& t - , typename enable_if_convertible<OtherIterator, Iterator>::type* = 0 -#if !BOOST_WORKAROUND(BOOST_MSVC, == 1310) - , typename enable_if_convertible<OtherUnaryFunction, UnaryFunc>::type* = 0 -#endif - ) - : super_t(t.base()), m_f(t.functor()) - {} - - UnaryFunc functor() const - { return m_f; } - - private: - typename super_t::reference dereference() const - { return m_f(*this->base()); } - - // Probably should be the initial base class so it can be - // optimized away via EBO if it is an empty class. - UnaryFunc m_f; - }; - - template <class UnaryFunc, class Iterator> - transform_iterator<UnaryFunc, Iterator> - make_transform_iterator(Iterator it, UnaryFunc fun) - { - return transform_iterator<UnaryFunc, Iterator>(it, fun); - } - - // Version which allows explicit specification of the UnaryFunc - // type. - // - // This generator is not provided if UnaryFunc is a function - // pointer type, because it's too dangerous: the default-constructed - // function pointer in the iterator be 0, leading to a runtime - // crash. - template <class UnaryFunc, class Iterator> -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) - typename mpl::if_< -#else - typename iterators::enable_if< -#endif - is_class<UnaryFunc> // We should probably find a cheaper test than is_class<> - , transform_iterator<UnaryFunc, Iterator> -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) - , int[3] -#endif - >::type - make_transform_iterator(Iterator it) - { - return transform_iterator<UnaryFunc, Iterator>(it, UnaryFunc()); - } - -#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) && !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) - template <class Return, class Argument, class Iterator> - transform_iterator< Return (*)(Argument), Iterator, Return> - make_transform_iterator(Iterator it, Return (*fun)(Argument)) - { - return transform_iterator<Return (*)(Argument), Iterator, Return>(it, fun); - } -#endif - -} // namespace boost - -#include <boost/iterator/detail/config_undef.hpp> - -#endif // BOOST_TRANSFORM_ITERATOR_23022003THW_HPP |