summaryrefslogtreecommitdiff
path: root/src/third_party/boost-1.56.0/boost/parameter
diff options
context:
space:
mode:
Diffstat (limited to 'src/third_party/boost-1.56.0/boost/parameter')
-rw-r--r--src/third_party/boost-1.56.0/boost/parameter/aux_/arg_list.hpp459
-rw-r--r--src/third_party/boost-1.56.0/boost/parameter/aux_/default.hpp69
-rw-r--r--src/third_party/boost-1.56.0/boost/parameter/aux_/is_maybe.hpp26
-rwxr-xr-xsrc/third_party/boost-1.56.0/boost/parameter/aux_/overloads.hpp88
-rwxr-xr-xsrc/third_party/boost-1.56.0/boost/parameter/aux_/parameter_requirements.hpp25
-rwxr-xr-xsrc/third_party/boost-1.56.0/boost/parameter/aux_/result_of0.hpp36
-rw-r--r--src/third_party/boost-1.56.0/boost/parameter/aux_/set.hpp67
-rwxr-xr-xsrc/third_party/boost-1.56.0/boost/parameter/aux_/tag.hpp38
-rw-r--r--src/third_party/boost-1.56.0/boost/parameter/aux_/tagged_argument.hpp188
-rwxr-xr-xsrc/third_party/boost-1.56.0/boost/parameter/aux_/template_keyword.hpp47
-rwxr-xr-xsrc/third_party/boost-1.56.0/boost/parameter/aux_/unwrap_cv_reference.hpp97
-rwxr-xr-xsrc/third_party/boost-1.56.0/boost/parameter/aux_/void.hpp29
-rwxr-xr-xsrc/third_party/boost-1.56.0/boost/parameter/aux_/yesno.hpp26
-rwxr-xr-xsrc/third_party/boost-1.56.0/boost/parameter/binding.hpp106
-rw-r--r--src/third_party/boost-1.56.0/boost/parameter/config.hpp14
-rwxr-xr-xsrc/third_party/boost-1.56.0/boost/parameter/keyword.hpp152
-rwxr-xr-xsrc/third_party/boost-1.56.0/boost/parameter/parameters.hpp931
17 files changed, 0 insertions, 2398 deletions
diff --git a/src/third_party/boost-1.56.0/boost/parameter/aux_/arg_list.hpp b/src/third_party/boost-1.56.0/boost/parameter/aux_/arg_list.hpp
deleted file mode 100644
index ed3929d5bfa..00000000000
--- a/src/third_party/boost-1.56.0/boost/parameter/aux_/arg_list.hpp
+++ /dev/null
@@ -1,459 +0,0 @@
-// Copyright Daniel Wallin, David Abrahams 2005. Use, modification and
-// distribution is subject to the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef ARG_LIST_050329_HPP
-#define ARG_LIST_050329_HPP
-
-#include <boost/parameter/aux_/void.hpp>
-#include <boost/parameter/aux_/result_of0.hpp>
-#include <boost/parameter/aux_/default.hpp>
-#include <boost/parameter/aux_/parameter_requirements.hpp>
-#include <boost/parameter/aux_/yesno.hpp>
-#include <boost/parameter/aux_/is_maybe.hpp>
-#include <boost/parameter/config.hpp>
-
-#include <boost/mpl/apply.hpp>
-#include <boost/mpl/assert.hpp>
-#include <boost/mpl/begin.hpp>
-#include <boost/mpl/end.hpp>
-#include <boost/mpl/iterator_tags.hpp>
-
-#include <boost/type_traits/add_reference.hpp>
-#include <boost/type_traits/is_same.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/facilities/intercept.hpp>
-
-namespace boost { namespace parameter {
-
-// Forward declaration for aux::arg_list, below.
-template<class T> struct keyword;
-
-namespace aux {
-
-// Tag type passed to MPL lambda.
-struct lambda_tag;
-
-//
-// Structures used to build the tuple of actual arguments. The
-// tuple is a nested cons-style list of arg_list specializations
-// terminated by an empty_arg_list.
-//
-// Each specialization of arg_list is derived from its successor in
-// the list type. This feature is used along with using
-// declarations to build member function overload sets that can
-// match against keywords.
-//
-
-// MPL sequence support
-struct arg_list_tag;
-
-// Terminates arg_list<> and represents an empty list. Since this
-// is just the terminating case you might want to look at arg_list
-// first, to get a feel for what's really happening here.
-
-struct empty_arg_list
-{
- empty_arg_list() {}
-
- // Constructor taking BOOST_PARAMETER_MAX_ARITY empty_arg_list
- // arguments; this makes initialization
- empty_arg_list(
- BOOST_PP_ENUM_PARAMS(
- BOOST_PARAMETER_MAX_ARITY, void_ BOOST_PP_INTERCEPT
- ))
- {}
-
- // A metafunction class that, given a keyword and a default
- // type, returns the appropriate result type for a keyword
- // lookup given that default
- struct binding
- {
- template<class KW, class Default, class Reference>
- struct apply
- {
- typedef Default type;
- };
- };
-
-#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
- // Terminator for has_key, indicating that the keyword is unique
- template <class KW>
- static no_tag has_key(KW*);
-#endif
-
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
- || (BOOST_WORKAROUND(__GNUC__, < 3)) \
- || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
-
- // The overload set technique doesn't work with these older
- // compilers, so they need some explicit handholding.
-
- // A metafunction class that, given a keyword, returns the type
- // of the base sublist whose get() function can produce the
- // value for that key
- struct key_owner
- {
- template<class KW>
- struct apply
- {
- typedef empty_arg_list type;
- };
- };
-
- template <class K, class T>
- T& get(default_<K,T> x) const
- {
- return x.value;
- }
-
- template <class K, class F>
- typename result_of0<F>::type
- get(lazy_default<K,F> x) const
- {
- return x.compute_default();
- }
-#endif
-
- // If this function is called, it means there is no argument
- // in the list that matches the supplied keyword. Just return
- // the default value.
- template <class K, class Default>
- Default& operator[](default_<K, Default> x) const
- {
- return x.value;
- }
-
- // If this function is called, it means there is no argument
- // in the list that matches the supplied keyword. Just evaluate
- // and return the default value.
- template <class K, class F>
- typename result_of0<F>::type
- operator[](
- BOOST_PARAMETER_lazy_default_fallback<K,F> x) const
- {
- return x.compute_default();
- }
-
- // No argument corresponding to ParameterRequirements::key_type
- // was found if we match this overload, so unless that parameter
- // has a default, we indicate that the actual arguments don't
- // match the function's requirements.
- template <class ParameterRequirements, class ArgPack>
- static typename ParameterRequirements::has_default
- satisfies(ParameterRequirements*, ArgPack*);
-
- // MPL sequence support
- typedef empty_arg_list type; // convenience
- typedef arg_list_tag tag; // For dispatching to sequence intrinsics
-};
-
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
-template<class KW>
-no_tag operator*(empty_arg_list, KW*);
-#endif
-
-// Forward declaration for arg_list::operator,
-template <class KW, class T>
-struct tagged_argument;
-
-template <class T>
-struct get_reference
-{
- typedef typename T::reference type;
-};
-
-// A tuple of tagged arguments, terminated with empty_arg_list.
-// Every TaggedArg is an instance of tagged_argument<>.
-template <class TaggedArg, class Next = empty_arg_list>
-struct arg_list : Next
-{
- typedef arg_list<TaggedArg,Next> self;
- typedef typename TaggedArg::key_type key_type;
-
- typedef typename is_maybe<typename TaggedArg::value_type>::type holds_maybe;
-
- typedef typename mpl::eval_if<
- holds_maybe
- , get_reference<typename TaggedArg::value_type>
- , get_reference<TaggedArg>
- >::type reference;
-
- typedef typename mpl::if_<
- holds_maybe
- , reference
- , typename TaggedArg::value_type
- >::type value_type;
-
- TaggedArg arg; // Stores the argument
-
- // Store the arguments in successive nodes of this list
- template< // class A0, class A1, ...
- BOOST_PP_ENUM_PARAMS(BOOST_PARAMETER_MAX_ARITY, class A)
- >
- arg_list( // A0& a0, A1& a1, ...
- BOOST_PP_ENUM_BINARY_PARAMS(BOOST_PARAMETER_MAX_ARITY, A, & a)
- )
- : Next( // a1, a2, ...
- BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_PARAMETER_MAX_ARITY, a)
- , void_reference()
- )
- , arg(a0)
- {}
-
- // Create a new list by prepending arg to a copy of tail. Used
- // when incrementally building this structure with the comma
- // operator.
- arg_list(TaggedArg head, Next const& tail)
- : Next(tail)
- , arg(head)
- {}
-
- // A metafunction class that, given a keyword and a default
- // type, returns the appropriate result type for a keyword
- // lookup given that default
- struct binding
- {
- template <class KW, class Default, class Reference>
- struct apply
- {
- typedef typename mpl::eval_if<
- boost::is_same<KW, key_type>
- , mpl::if_<Reference, reference, value_type>
- , mpl::apply_wrap3<typename Next::binding, KW, Default, Reference>
- >::type type;
- };
- };
-
-#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && !BOOST_WORKAROUND(__GNUC__, == 2)
-# if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
- friend yes_tag operator*(arg_list, key_type*);
-# define BOOST_PARAMETER_CALL_HAS_KEY(next, key) (*(next*)0 * (key*)0)
-# else
- // Overload for key_type, so the assert below will fire if the
- // same keyword is used again
- static yes_tag has_key(key_type*);
- using Next::has_key;
-
-# define BOOST_PARAMETER_CALL_HAS_KEY(next, key) next::has_key((key*)0)
-# endif
-
- BOOST_MPL_ASSERT_MSG(
- sizeof(BOOST_PARAMETER_CALL_HAS_KEY(Next,key_type)) == sizeof(no_tag)
- , duplicate_keyword, (key_type)
- );
-
-# undef BOOST_PARAMETER_CALL_HAS_KEY
-#endif
- //
- // Begin implementation of indexing operators for looking up
- // specific arguments by name
- //
-
- // Helpers that handle the case when TaggedArg is
- // empty<T>.
- template <class D>
- reference get_default(D const&, mpl::false_) const
- {
- return arg.value;
- }
-
- template <class D>
- reference get_default(D const& d, mpl::true_) const
- {
- return arg.value ? arg.value.get() : arg.value.construct(d.value);
- }
-
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
- || BOOST_WORKAROUND(__GNUC__, < 3) \
- || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
- // These older compilers don't support the overload set creation
- // idiom well, so we need to do all the return type calculation
- // for the compiler and dispatch through an outer function template
-
- // A metafunction class that, given a keyword, returns the base
- // sublist whose get() function can produce the value for that
- // key.
- struct key_owner
- {
- template<class KW>
- struct apply
- {
- typedef typename mpl::eval_if<
- boost::is_same<KW, key_type>
- , mpl::identity<arg_list<TaggedArg,Next> >
- , mpl::apply_wrap1<typename Next::key_owner,KW>
- >::type type;
- };
- };
-
- // Outer indexing operators that dispatch to the right node's
- // get() function.
- template <class KW>
- typename mpl::apply_wrap3<binding, KW, void_, mpl::true_>::type
- operator[](keyword<KW> const& x) const
- {
- typename mpl::apply_wrap1<key_owner, KW>::type const& sublist = *this;
- return sublist.get(x);
- }
-
- template <class KW, class Default>
- typename mpl::apply_wrap3<binding, KW, Default&, mpl::true_>::type
- operator[](default_<KW, Default> x) const
- {
- typename mpl::apply_wrap1<key_owner, KW>::type const& sublist = *this;
- return sublist.get(x);
- }
-
- template <class KW, class F>
- typename mpl::apply_wrap3<
- binding,KW
- , typename result_of0<F>::type
- , mpl::true_
- >::type
- operator[](lazy_default<KW,F> x) const
- {
- typename mpl::apply_wrap1<key_owner, KW>::type const& sublist = *this;
- return sublist.get(x);
- }
-
- // These just return the stored value; when empty_arg_list is
- // reached, indicating no matching argument was passed, the
- // default is returned, or if no default_ or lazy_default was
- // passed, compilation fails.
- reference get(keyword<key_type> const&) const
- {
- BOOST_MPL_ASSERT_NOT((holds_maybe));
- return arg.value;
- }
-
- template <class Default>
- reference get(default_<key_type,Default> const& d) const
- {
- return get_default(d, holds_maybe());
- }
-
- template <class Default>
- reference get(lazy_default<key_type, Default>) const
- {
- return arg.value;
- }
-
-#else
-
- reference operator[](keyword<key_type> const&) const
- {
- BOOST_MPL_ASSERT_NOT((holds_maybe));
- return arg.value;
- }
-
- template <class Default>
- reference operator[](default_<key_type, Default> const& d) const
- {
- return get_default(d, holds_maybe());
- }
-
- template <class Default>
- reference operator[](lazy_default<key_type, Default>) const
- {
- return arg.value;
- }
-
- // Builds an overload set including operator[]s defined in base
- // classes.
- using Next::operator[];
-
- //
- // End of indexing support
- //
-
-
- //
- // For parameter_requirements matching this node's key_type,
- // return a bool constant wrapper indicating whether the
- // requirements are satisfied by TaggedArg. Used only for
- // compile-time computation and never really called, so a
- // declaration is enough.
- //
- template <class HasDefault, class Predicate, class ArgPack>
- static typename mpl::apply_wrap2<
- typename mpl::lambda<Predicate, lambda_tag>::type
- , value_type, ArgPack
- >::type
- satisfies(
- parameter_requirements<key_type,Predicate,HasDefault>*
- , ArgPack*
- );
-
- // Builds an overload set including satisfies functions defined
- // in base classes.
- using Next::satisfies;
-#endif
-
- // Comma operator to compose argument list without using parameters<>.
- // Useful for argument lists with undetermined length.
- template <class KW, class T2>
- arg_list<tagged_argument<KW, T2>, self>
- operator,(tagged_argument<KW,T2> x) const
- {
- return arg_list<tagged_argument<KW,T2>, self>(x, *this);
- }
-
- // MPL sequence support
- typedef self type; // Convenience for users
- typedef Next tail_type; // For the benefit of iterators
- typedef arg_list_tag tag; // For dispatching to sequence intrinsics
-};
-
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) // ETI workaround
-template <> struct arg_list<int,int> {};
-#endif
-
-// MPL sequence support
-template <class ArgumentPack>
-struct arg_list_iterator
-{
- typedef mpl::forward_iterator_tag category;
-
- // The incremented iterator
- typedef arg_list_iterator<typename ArgumentPack::tail_type> next;
-
- // dereferencing yields the key type
- typedef typename ArgumentPack::key_type type;
-};
-
-template <>
-struct arg_list_iterator<empty_arg_list> {};
-
-}} // namespace parameter::aux
-
-// MPL sequence support
-namespace mpl
-{
- template <>
- struct begin_impl<parameter::aux::arg_list_tag>
- {
- template <class S>
- struct apply
- {
- typedef parameter::aux::arg_list_iterator<S> type;
- };
- };
-
- template <>
- struct end_impl<parameter::aux::arg_list_tag>
- {
- template <class>
- struct apply
- {
- typedef parameter::aux::arg_list_iterator<parameter::aux::empty_arg_list> type;
- };
- };
-}
-
-} // namespace boost
-
-#endif // ARG_LIST_050329_HPP
-
diff --git a/src/third_party/boost-1.56.0/boost/parameter/aux_/default.hpp b/src/third_party/boost-1.56.0/boost/parameter/aux_/default.hpp
deleted file mode 100644
index 604da612996..00000000000
--- a/src/third_party/boost-1.56.0/boost/parameter/aux_/default.hpp
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright Daniel Wallin, David Abrahams 2005. Use, modification and
-// distribution is subject to the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef DEFAULT_050329_HPP
-# define DEFAULT_050329_HPP
-
-# include <boost/detail/workaround.hpp>
-
-namespace boost { namespace parameter { namespace aux {
-
-// A wrapper for the default value passed by the user when resolving
-// the value of the parameter with the given Keyword
-template <class Keyword, class Value>
-struct default_
-{
- default_(Value& x)
- : value(x)
- {}
-
- Value& value;
-};
-
-//
-// lazy_default --
-//
-// A wrapper for the default value computation function passed by
-// the user when resolving the value of the parameter with the
-// given keyword
-//
-# if BOOST_WORKAROUND(__EDG_VERSION__, <= 300)
-// These compilers need a little extra help with overload
-// resolution; we have empty_arg_list's operator[] accept a base
-// class to make that overload less preferable.
-template <class KW, class DefaultComputer>
-struct lazy_default_base
-{
- lazy_default_base(DefaultComputer const& x)
- : compute_default(x)
- {}
- DefaultComputer const& compute_default;
-};
-
-template <class KW, class DefaultComputer>
-struct lazy_default
- : lazy_default_base<KW,DefaultComputer>
- {
- lazy_default(DefaultComputer const & x)
- : lazy_default_base<KW,DefaultComputer>(x)
- {}
- };
-# define BOOST_PARAMETER_lazy_default_fallback lazy_default_base
-# else
-template <class KW, class DefaultComputer>
-struct lazy_default
-{
- lazy_default(const DefaultComputer& x)
- : compute_default(x)
- {}
- DefaultComputer const& compute_default;
-};
-# define BOOST_PARAMETER_lazy_default_fallback lazy_default
-# endif
-
-}}} // namespace boost::parameter::aux
-
-#endif // DEFAULT_050329_HPP
-
diff --git a/src/third_party/boost-1.56.0/boost/parameter/aux_/is_maybe.hpp b/src/third_party/boost-1.56.0/boost/parameter/aux_/is_maybe.hpp
deleted file mode 100644
index b8758528476..00000000000
--- a/src/third_party/boost-1.56.0/boost/parameter/aux_/is_maybe.hpp
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright Daniel Wallin, David Abrahams 2010. 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 BOOST_PARAMETER_IS_MAYBE_050329_HPP
-#define BOOST_PARAMETER_IS_MAYBE_050329_HPP
-
-#include <boost/type_traits/is_base_and_derived.hpp>
-
-namespace boost {
-namespace parameter {
-namespace aux {
-
-struct maybe_base {};
-
-template <class T>
-struct is_maybe
- : is_base_and_derived<maybe_base, T>
-{};
-
-} // namespace aux
-} // namespace parameter
-} // namespace boost
-
-#endif // BOOST_PARAMETER_IS_MAYBE_050329_HPP
diff --git a/src/third_party/boost-1.56.0/boost/parameter/aux_/overloads.hpp b/src/third_party/boost-1.56.0/boost/parameter/aux_/overloads.hpp
deleted file mode 100755
index dcc92d4d756..00000000000
--- a/src/third_party/boost-1.56.0/boost/parameter/aux_/overloads.hpp
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright David Abrahams, Daniel Wallin 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)
-
-// This file generates overloads in this format:
-//
-// template<class A0, class A1>
-// typename mpl::apply_wrap1<
-// aux::make_arg_list<
-// PS0,A0
-// , aux::make_arg_list<
-// PS1,A1
-// , mpl::identity<aux::empty_arg_list>
-// >
-// >
-// , unnamed_list
-// >::type
-// operator()(A0 const& a0, A1 const& a1) const
-// {
-// typedef typename mpl::apply_wrap1<
-// aux::make_arg_list<
-// PS0,A0
-// , aux::make_arg_list<
-// PS1,A1
-// , mpl::identity<aux::empty_arg_list>
-// >
-// >
-// >::type arg_tuple;
-//
-// return arg_tuple(
-// a0
-// , a1
-// , aux::void_()
-// ...
-// );
-// }
-//
-
-#if !defined(BOOST_PP_IS_ITERATING)
-# error Boost.Parameters - do not include this file!
-#endif
-
-#define N BOOST_PP_ITERATION()
-
-#define BOOST_PARAMETER_open_list(z, n, text) \
- aux::item< \
- BOOST_PP_CAT(PS, n), BOOST_PP_CAT(A, n)
-
-#define BOOST_PARAMETER_close_list(z, n, text) >
-
-#define BOOST_PARAMETER_arg_list(n) \
- aux::make_arg_list< \
- BOOST_PP_ENUM(N, BOOST_PARAMETER_open_list, _) \
- , void_ \
- BOOST_PP_REPEAT(N, BOOST_PARAMETER_close_list, _) \
- , deduced_list \
- , aux::tag_keyword_arg \
- >
-
-#define BOOST_PARAMETER_arg_pack_init(z, n, limit) \
- BOOST_PP_CAT(a, BOOST_PP_SUB(limit,n))
-
-template<BOOST_PP_ENUM_PARAMS(N, class A)>
-typename mpl::first<
- typename BOOST_PARAMETER_arg_list(N)::type
->::type
-operator()(BOOST_PP_ENUM_BINARY_PARAMS(N, A, & a)) const
-{
- typedef typename BOOST_PARAMETER_arg_list(N)::type result;
-
- typedef typename mpl::first<result>::type result_type;
- typedef typename mpl::second<result>::type error;
- error();
-
- return result_type(
- BOOST_PP_ENUM(N, BOOST_PARAMETER_arg_pack_init, BOOST_PP_DEC(N))
- BOOST_PP_ENUM_TRAILING_PARAMS(
- BOOST_PP_SUB(BOOST_PARAMETER_MAX_ARITY, N)
- , aux::void_reference() BOOST_PP_INTERCEPT
- ));
-}
-
-#undef BOOST_PARAMETER_arg_list
-#undef BOOST_PARAMETER_open_list
-#undef BOOST_PARAMETER_close_list
-#undef N
-
diff --git a/src/third_party/boost-1.56.0/boost/parameter/aux_/parameter_requirements.hpp b/src/third_party/boost-1.56.0/boost/parameter/aux_/parameter_requirements.hpp
deleted file mode 100755
index ad7a129dd70..00000000000
--- a/src/third_party/boost-1.56.0/boost/parameter/aux_/parameter_requirements.hpp
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright Daniel Wallin, David Abrahams 2005. Use, modification and
-// distribution is subject to the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef PARAMETER_REQUIREMENTS_050331_HPP
-#define PARAMETER_REQUIREMENTS_050331_HPP
-
-namespace boost { namespace parameter { namespace aux {
-
-// Used to pass static information about parameter requirements
-// through the satisfies() overload set (below). The
-// matched function is never invoked, but its type indicates whether
-// a parameter matches at compile-time
-template <class Keyword, class Predicate, class HasDefault>
-struct parameter_requirements
-{
- typedef Keyword keyword;
- typedef Predicate predicate;
- typedef HasDefault has_default;
-};
-
-}}} // namespace boost::parameter::aux
-
-#endif // PARAMETER_REQUIREMENTS_050331_HPP
diff --git a/src/third_party/boost-1.56.0/boost/parameter/aux_/result_of0.hpp b/src/third_party/boost-1.56.0/boost/parameter/aux_/result_of0.hpp
deleted file mode 100755
index e0096148b47..00000000000
--- a/src/third_party/boost-1.56.0/boost/parameter/aux_/result_of0.hpp
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright David Abrahams 2005. Distributed under the 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_PARAMETER_AUX_RESULT_OF0_DWA2005511_HPP
-# define BOOST_PARAMETER_AUX_RESULT_OF0_DWA2005511_HPP
-
-# include <boost/utility/result_of.hpp>
-
-// A metafunction returning the result of invoking a nullary function
-// object of the given type.
-
-#ifndef BOOST_NO_RESULT_OF
-
-# include <boost/utility/result_of.hpp>
-namespace boost { namespace parameter { namespace aux {
-template <class F>
-struct result_of0 : result_of<F()>
-{};
-
-}}} // namespace boost::parameter::aux_
-
-#else
-
-namespace boost { namespace parameter { namespace aux {
-template <class F>
-struct result_of0
-{
- typedef typename F::result_type type;
-};
-
-}}} // namespace boost::parameter::aux_
-
-#endif
-
-
-#endif // BOOST_PARAMETER_AUX_RESULT_OF0_DWA2005511_HPP
diff --git a/src/third_party/boost-1.56.0/boost/parameter/aux_/set.hpp b/src/third_party/boost-1.56.0/boost/parameter/aux_/set.hpp
deleted file mode 100644
index 1c4ccf5d94c..00000000000
--- a/src/third_party/boost-1.56.0/boost/parameter/aux_/set.hpp
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright Daniel Wallin 2006. Use, modification and distribution is
-// subject to the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_PARAMETER_SET_060912_HPP
-# define BOOST_PARAMETER_SET_060912_HPP
-
-# include <boost/detail/workaround.hpp>
-
-# if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) \
- && !BOOST_WORKAROUND(__GNUC__, < 3)
-# include <boost/mpl/insert.hpp>
-# include <boost/mpl/set/set0.hpp>
-# include <boost/mpl/has_key.hpp>
-
-namespace boost { namespace parameter { namespace aux {
-
-typedef mpl::set0<> set0;
-
-template <class Set, class K>
-struct insert_
-{
- typedef typename mpl::insert<Set, K>::type type;
-};
-
-template <class Set, class K>
-struct has_key_
-{
- typedef typename mpl::has_key<Set, K>::type type;
-};
-
-}}} // namespace boost::parameter::aux
-
-# else
-
-# include <boost/mpl/list.hpp>
-# include <boost/mpl/end.hpp>
-# include <boost/mpl/find.hpp>
-# include <boost/mpl/not.hpp>
-# include <boost/mpl/push_front.hpp>
-
-namespace boost { namespace parameter { namespace aux {
-
-typedef mpl::list0<> set0;
-
-template <class Set, class K>
-struct insert_
-{
- typedef typename mpl::push_front<Set, K>::type type;
-};
-
-template <class Set, class K>
-struct has_key_
-{
- typedef typename mpl::find<Set, K>::type iter;
- typedef mpl::not_<
- is_same<iter, typename mpl::end<Set>::type>
- > type;
-};
-
-}}} // namespace boost::parameter::aux
-
-# endif
-
-
-#endif // BOOST_PARAMETER_SET_060912_HPP
-
diff --git a/src/third_party/boost-1.56.0/boost/parameter/aux_/tag.hpp b/src/third_party/boost-1.56.0/boost/parameter/aux_/tag.hpp
deleted file mode 100755
index 475efb9e4ac..00000000000
--- a/src/third_party/boost-1.56.0/boost/parameter/aux_/tag.hpp
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright David Abrahams 2005. Distributed under the 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_PARAMETER_AUX_TAG_DWA2005610_HPP
-# define BOOST_PARAMETER_AUX_TAG_DWA2005610_HPP
-
-# include <boost/parameter/aux_/unwrap_cv_reference.hpp>
-# include <boost/parameter/aux_/tagged_argument.hpp>
-
-namespace boost { namespace parameter { namespace aux {
-
-template <class Keyword, class ActualArg
-#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
- , class = typename is_cv_reference_wrapper<ActualArg>::type
-#endif
- >
-struct tag
-{
- typedef tagged_argument<
- Keyword
- , typename unwrap_cv_reference<ActualArg>::type
- > type;
-};
-
-#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
-template <class Keyword, class ActualArg>
-struct tag<Keyword,ActualArg,mpl::false_>
-{
- typedef tagged_argument<
- Keyword
- , ActualArg
- > type;
-};
-#endif
-
-}}} // namespace boost::parameter::aux_
-
-#endif // BOOST_PARAMETER_AUX_TAG_DWA2005610_HPP
diff --git a/src/third_party/boost-1.56.0/boost/parameter/aux_/tagged_argument.hpp b/src/third_party/boost-1.56.0/boost/parameter/aux_/tagged_argument.hpp
deleted file mode 100644
index 6248be2d4a5..00000000000
--- a/src/third_party/boost-1.56.0/boost/parameter/aux_/tagged_argument.hpp
+++ /dev/null
@@ -1,188 +0,0 @@
-// Copyright Daniel Wallin, David Abrahams 2005. Use, modification and
-// distribution is subject to the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_PARAMETER_TAGGED_ARGUMENT_050328_HPP
-# define BOOST_PARAMETER_TAGGED_ARGUMENT_050328_HPP
-
-# include <boost/parameter/aux_/void.hpp>
-# include <boost/parameter/aux_/arg_list.hpp>
-# include <boost/parameter/aux_/result_of0.hpp>
-# include <boost/mpl/if.hpp>
-# include <boost/mpl/apply_wrap.hpp>
-# include <boost/mpl/and.hpp>
-# include <boost/mpl/not.hpp>
-# include <boost/type_traits/is_same.hpp>
-# include <boost/type_traits/is_convertible.hpp>
-# include <boost/type_traits/is_reference.hpp>
-
-namespace boost { namespace parameter { namespace aux {
-
-struct empty_arg_list;
-struct arg_list_tag;
-
-struct tagged_argument_base {};
-
-// Holds a reference to an argument of type Arg associated with
-// keyword Keyword
-
-template <class Keyword, class Arg>
-struct tagged_argument : tagged_argument_base
-{
- typedef Keyword key_type;
- typedef Arg value_type;
- typedef Arg& reference;
-
- tagged_argument(reference x) : value(x) {}
-
- // A metafunction class that, given a keyword and a default
- // type, returns the appropriate result type for a keyword
- // lookup given that default
- struct binding
- {
- template <class KW, class Default, class Reference>
- struct apply
- {
- typedef typename mpl::eval_if<
- boost::is_same<KW, key_type>
- , mpl::if_<Reference, reference, value_type>
- , mpl::identity<Default>
- >::type type;
- };
- };
-
- // Comma operator to compose argument list without using parameters<>.
- // Useful for argument lists with undetermined length.
- template <class Keyword2, class Arg2>
- arg_list<
- tagged_argument<Keyword, Arg>
- , arg_list<tagged_argument<Keyword2, Arg2> >
- >
- operator,(tagged_argument<Keyword2, Arg2> x) const
- {
- return arg_list<
- tagged_argument<Keyword, Arg>
- , arg_list<tagged_argument<Keyword2, Arg2> >
- >(
- *this
- , arg_list<tagged_argument<Keyword2, Arg2> >(x, empty_arg_list())
- );
- }
-
- reference operator[](keyword<Keyword> const&) const
- {
- return value;
- }
-
-# if defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
- template <class KW, class Default>
- Default& get_with_default(default_<KW,Default> const& x, int) const
- {
- return x.value;
- }
-
- template <class Default>
- reference get_with_default(default_<key_type,Default> const&, long) const
- {
- return value;
- }
-
- template <class KW, class Default>
- typename mpl::apply_wrap3<binding, KW, Default&, mpl::true_>::type
- operator[](default_<KW,Default> const& x) const
- {
- return get_with_default(x, 0L);
- }
-
- template <class KW, class F>
- typename result_of0<F>::type
- get_with_lazy_default(lazy_default<KW,F> const& x, int) const
- {
- return x.compute_default();
- }
-
- template <class F>
- reference get_with_lazy_default(lazy_default<key_type,F> const&, long) const
- {
- return value;
- }
-
- template <class KW, class F>
- typename mpl::apply_wrap3<
- binding,KW
- , typename result_of0<F>::type
- , mpl::true_
- >::type
- operator[](lazy_default<KW,F> const& x) const
- {
- return get_with_lazy_default(x, 0L);
- }
-# else
- template <class Default>
- reference operator[](default_<key_type,Default> const& x) const
- {
- return value;
- }
-
- template <class F>
- reference operator[](lazy_default<key_type,F> const& x) const
- {
- return value;
- }
-
- template <class KW, class Default>
- Default& operator[](default_<KW,Default> const& x) const
- {
- return x.value;
- }
-
- template <class KW, class F>
- typename result_of0<F>::type operator[](lazy_default<KW,F> const& x) const
- {
- return x.compute_default();
- }
-
- template <class ParameterRequirements>
- static typename ParameterRequirements::has_default
- satisfies(ParameterRequirements*);
-
- template <class HasDefault, class Predicate>
- static typename mpl::apply1<Predicate, value_type>::type
- satisfies(
- parameter_requirements<key_type,Predicate,HasDefault>*
- );
-# endif
-
- reference value;
-# if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1310))
- // warning suppression
- private:
- void operator=(tagged_argument const&);
- public:
-# endif
- // MPL sequence support
- typedef tagged_argument type; // Convenience for users
- typedef empty_arg_list tail_type; // For the benefit of iterators
- typedef arg_list_tag tag; // For dispatching to sequence intrinsics
-};
-
-// Defines a metafunction, is_tagged_argument, that identifies
-// tagged_argument specializations and their derived classes.
-template <class T>
-struct is_tagged_argument_aux
- : is_convertible<T*,tagged_argument_base const*>
-{};
-
-template <class T>
-struct is_tagged_argument
- : mpl::and_<
- mpl::not_<is_reference<T> >
- , is_tagged_argument_aux<T>
- >
-{};
-
-}}} // namespace boost::parameter::aux
-
-#endif // BOOST_PARAMETER_TAGGED_ARGUMENT_050328_HPP
-
diff --git a/src/third_party/boost-1.56.0/boost/parameter/aux_/template_keyword.hpp b/src/third_party/boost-1.56.0/boost/parameter/aux_/template_keyword.hpp
deleted file mode 100755
index 5a02f008a32..00000000000
--- a/src/third_party/boost-1.56.0/boost/parameter/aux_/template_keyword.hpp
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright Daniel Wallin 2006. Use, modification and distribution is
-// subject to the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_PARAMETER_TEMPLATE_KEYWORD_060203_HPP
-# define BOOST_PARAMETER_TEMPLATE_KEYWORD_060203_HPP
-
-# include <boost/mpl/and.hpp>
-# include <boost/mpl/not.hpp>
-# include <boost/type_traits/is_convertible.hpp>
-# include <boost/type_traits/is_reference.hpp>
-
-namespace boost { namespace parameter {
-
-namespace aux
-{
-
- struct template_keyword_tag {};
-
- template <class T, class U>
- struct is_pointer_convertible
- : is_convertible<T*, U*>
- {};
-
- template <class T>
- struct is_template_keyword
- : mpl::and_<
- mpl::not_<is_reference<T> >
- , is_pointer_convertible<T, template_keyword_tag>
- >
- {};
-
-} // namespace aux
-
-template <class Tag, class T>
-struct template_keyword
- : aux::template_keyword_tag
-{
- typedef Tag key_type;
- typedef T value_type;
- typedef value_type reference;
-};
-
-}} // namespace boost::parameter
-
-#endif // BOOST_PARAMETER_TEMPLATE_KEYWORD_060203_HPP
-
diff --git a/src/third_party/boost-1.56.0/boost/parameter/aux_/unwrap_cv_reference.hpp b/src/third_party/boost-1.56.0/boost/parameter/aux_/unwrap_cv_reference.hpp
deleted file mode 100755
index e7aa0c1d3a5..00000000000
--- a/src/third_party/boost-1.56.0/boost/parameter/aux_/unwrap_cv_reference.hpp
+++ /dev/null
@@ -1,97 +0,0 @@
-// Copyright Daniel Wallin, David Abrahams 2005. Use, modification and
-// distribution is subject to the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef UNWRAP_CV_REFERENCE_050328_HPP
-#define UNWRAP_CV_REFERENCE_050328_HPP
-
-#include <boost/parameter/aux_/yesno.hpp>
-#include <boost/mpl/bool.hpp>
-#include <boost/mpl/identity.hpp>
-#include <boost/mpl/eval_if.hpp>
-
-namespace boost { template<class T> class reference_wrapper; }
-
-namespace boost { namespace parameter { namespace aux {
-
-//
-// reference_wrapper support -- because of the forwarding problem,
-// when passing arguments positionally by non-const reference, we
-// ask users of named parameter interfaces to use ref(x) to wrap
-// them.
-//
-
-// is_cv_reference_wrapper returns mpl::true_ if T is of type
-// reference_wrapper<U> cv
-template <class U>
-yes_tag is_cv_reference_wrapper_check(reference_wrapper<U> const volatile*);
-no_tag is_cv_reference_wrapper_check(...);
-
-template <class T>
-struct is_cv_reference_wrapper
-{
- BOOST_STATIC_CONSTANT(
- bool, value = (
- sizeof(is_cv_reference_wrapper_check((T*)0)) == sizeof(yes_tag)
- )
- );
-
- typedef mpl::bool_<
-#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
- is_cv_reference_wrapper::
-#endif
- value> type;
-};
-
-#if BOOST_WORKAROUND(MSVC, == 1200)
-template <>
-struct is_cv_reference_wrapper<int>
- : mpl::false_ {};
-#endif
-
-// Needed for unwrap_cv_reference below. T might be const, so
-// eval_if might fail because of deriving from T const on EDG.
-template <class T>
-struct get_type
-{
- typedef typename T::type type;
-};
-
-#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
-template <class T, class is_reference_wrapper = typename is_cv_reference_wrapper<T>::type>
-struct unwrap_cv_reference
-{
- typedef T type;
-};
-
-template <class T>
-struct unwrap_cv_reference<T const, mpl::false_>
-{
- typedef T const type;
-};
-
-template <class T>
-struct unwrap_cv_reference<T, mpl::true_>
- : T
-{};
-
-#else
-// Produces the unwrapped type to hold a reference to in named<>
-// Can't use boost::unwrap_reference<> here because it
-// doesn't handle the case where T = reference_wrapper<U> cv
-template <class T>
-struct unwrap_cv_reference
-{
- typedef typename mpl::eval_if<
- is_cv_reference_wrapper<T>
- , get_type<T>
- , mpl::identity<T>
- >::type type;
-};
-#endif
-
-}}} // namespace boost::parameter::aux
-
-#endif // UNWRAP_CV_REFERENCE_050328_HPP
-
diff --git a/src/third_party/boost-1.56.0/boost/parameter/aux_/void.hpp b/src/third_party/boost-1.56.0/boost/parameter/aux_/void.hpp
deleted file mode 100755
index 7061a7deb5a..00000000000
--- a/src/third_party/boost-1.56.0/boost/parameter/aux_/void.hpp
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright Daniel Wallin, David Abrahams 2005. Use, modification and
-// distribution is subject to the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_PARAMETER_VOID_050329_HPP
-#define BOOST_PARAMETER_VOID_050329_HPP
-
-namespace boost { namespace parameter {
-
-// A placemarker for "no argument passed."
-// MAINTAINER NOTE: Do not make this into a metafunction
-struct void_ {};
-
-namespace aux
-{
-
- inline void_& void_reference()
- {
- static void_ instance;
- return instance;
- }
-
-} // namespace aux
-
-}} // namespace boost::parameter
-
-#endif // BOOST_PARAMETER_VOID_050329_HPP
-
diff --git a/src/third_party/boost-1.56.0/boost/parameter/aux_/yesno.hpp b/src/third_party/boost-1.56.0/boost/parameter/aux_/yesno.hpp
deleted file mode 100755
index 13fa545a683..00000000000
--- a/src/third_party/boost-1.56.0/boost/parameter/aux_/yesno.hpp
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright Daniel Wallin, David Abrahams 2005. Use, modification and
-// distribution is subject to the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef YESNO_050328_HPP
-#define YESNO_050328_HPP
-
-#include <boost/mpl/bool.hpp>
-
-namespace boost { namespace parameter { namespace aux {
-
-// types used with the "sizeof trick" to capture the results of
-// overload resolution at compile-time.
-typedef char yes_tag;
-typedef char (&no_tag)[2];
-
-// mpl::true_ and mpl::false_ are not distinguishable by sizeof(),
-// so we pass them through these functions to get a type that is.
-yes_tag to_yesno(mpl::true_);
-no_tag to_yesno(mpl::false_);
-
-}}} // namespace boost::parameter::aux
-
-#endif // YESNO_050328_HPP
-
diff --git a/src/third_party/boost-1.56.0/boost/parameter/binding.hpp b/src/third_party/boost-1.56.0/boost/parameter/binding.hpp
deleted file mode 100755
index 632f0fdb9d9..00000000000
--- a/src/third_party/boost-1.56.0/boost/parameter/binding.hpp
+++ /dev/null
@@ -1,106 +0,0 @@
-// Copyright David Abrahams 2005. Distributed under the 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_PARAMETER_BINDING_DWA200558_HPP
-# define BOOST_PARAMETER_BINDING_DWA200558_HPP
-
-# include <boost/mpl/apply.hpp>
-# include <boost/mpl/assert.hpp>
-# include <boost/mpl/and.hpp>
-# include <boost/parameter/aux_/result_of0.hpp>
-# include <boost/parameter/aux_/void.hpp>
-# include <boost/type_traits/is_same.hpp>
-
-# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
-# include <boost/mpl/eval_if.hpp>
-# endif
-
-namespace boost { namespace parameter {
-
-// A metafunction that, given an argument pack, returns the type of
-// the parameter identified by the given keyword. If no such
-// parameter has been specified, returns Default
-
-# if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
- || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
-template <class Parameters, class Keyword, class Default>
-struct binding0
-{
- typedef typename mpl::apply_wrap3<
- typename Parameters::binding,Keyword,Default,mpl::true_
- >::type type;
-
- BOOST_MPL_ASSERT_NOT((
- mpl::and_<
- is_same<Default, void_>
- , is_same<type, void_>
- >
- ));
-};
-# endif
-
-template <class Parameters, class Keyword, class Default = void_>
-# if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
-struct binding
-# else
-struct binding_eti
-# endif
-{
-# if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
- || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
- typedef typename mpl::eval_if<
- mpl::is_placeholder<Parameters>
- , mpl::identity<int>
- , binding0<Parameters,Keyword,Default>
- >::type type;
-# else
- typedef typename mpl::apply_wrap3<
- typename Parameters::binding,Keyword,Default,mpl::true_
- >::type type;
-
- BOOST_MPL_ASSERT_NOT((
- mpl::and_<
- is_same<Default, void_>
- , is_same<type, void_>
- >
- ));
-# endif
-
-# if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
- BOOST_MPL_AUX_LAMBDA_SUPPORT(3,binding,(Parameters,Keyword,Default))
-# endif
-};
-
-# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
-template <class Parameters, class Keyword, class Default = void_>
-struct binding
-{
- typedef typename mpl::eval_if<
- is_same<Parameters, int>
- , mpl::identity<int>
- , binding_eti<Parameters, Keyword, Default>
- >::type type;
-
- BOOST_MPL_AUX_LAMBDA_SUPPORT(3,binding,(Parameters,Keyword,Default))
-};
-# endif
-
-// A metafunction that, given an argument pack, returns the type of
-// the parameter identified by the given keyword. If no such
-// parameter has been specified, returns the type returned by invoking
-// DefaultFn
-template <class Parameters, class Keyword, class DefaultFn>
-struct lazy_binding
-{
- typedef typename mpl::apply_wrap3<
- typename Parameters::binding
- , Keyword
- , typename aux::result_of0<DefaultFn>::type
- , mpl::true_
- >::type type;
-};
-
-
-}} // namespace boost::parameter
-
-#endif // BOOST_PARAMETER_BINDING_DWA200558_HPP
diff --git a/src/third_party/boost-1.56.0/boost/parameter/config.hpp b/src/third_party/boost-1.56.0/boost/parameter/config.hpp
deleted file mode 100644
index 5710c92c0a0..00000000000
--- a/src/third_party/boost-1.56.0/boost/parameter/config.hpp
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright Daniel Wallin, David Abrahams 2005. Use, modification and
-// distribution is subject to the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_PARAMETER_CONFIG_050403_HPP
-#define BOOST_PARAMETER_CONFIG_050403_HPP
-
-#ifndef BOOST_PARAMETER_MAX_ARITY
-# define BOOST_PARAMETER_MAX_ARITY 8
-#endif
-
-#endif // BOOST_PARAMETER_CONFIG_050403_HPP
-
diff --git a/src/third_party/boost-1.56.0/boost/parameter/keyword.hpp b/src/third_party/boost-1.56.0/boost/parameter/keyword.hpp
deleted file mode 100755
index cfb4bfdc531..00000000000
--- a/src/third_party/boost-1.56.0/boost/parameter/keyword.hpp
+++ /dev/null
@@ -1,152 +0,0 @@
-// Copyright Daniel Wallin, David Abrahams 2005. Use, modification and
-// distribution is subject to the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef KEYWORD_050328_HPP
-#define KEYWORD_050328_HPP
-
-#include <boost/parameter/aux_/unwrap_cv_reference.hpp>
-#include <boost/parameter/aux_/tag.hpp>
-#include <boost/parameter/aux_/default.hpp>
-
-namespace boost { namespace parameter {
-
-// Instances of unique specializations of keyword<...> serve to
-// associate arguments with parameter names. For example:
-//
-// struct rate_; // parameter names
-// struct skew_;
-// namespace
-// {
-// keyword<rate_> rate; // keywords
-// keyword<skew_> skew;
-// }
-//
-// ...
-//
-// f(rate = 1, skew = 2.4);
-//
-template <class Tag>
-struct keyword
-{
- template <class T>
- typename aux::tag<Tag, T>::type const
- operator=(T& x) const
- {
- typedef typename aux::tag<Tag, T>::type result;
- return result(x);
- }
-
- template <class Default>
- aux::default_<Tag, Default>
- operator|(Default& default_) const
- {
- return aux::default_<Tag, Default>(default_);
- }
-
- template <class Default>
- aux::lazy_default<Tag, Default>
- operator||(Default& default_) const
- {
- return aux::lazy_default<Tag, Default>(default_);
- }
-
-#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300) // avoid partial ordering bugs
- template <class T>
- typename aux::tag<Tag, T const>::type const
- operator=(T const& x) const
- {
- typedef typename aux::tag<Tag, T const>::type result;
- return result(x);
- }
-#endif
-
-#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300) // avoid partial ordering bugs
- template <class Default>
- aux::default_<Tag, const Default>
- operator|(const Default& default_) const
-#if BOOST_WORKAROUND(BOOST_MSVC, == 1300)
- volatile
-#endif
- {
- return aux::default_<Tag, const Default>(default_);
- }
-
- template <class Default>
- aux::lazy_default<Tag, Default>
- operator||(Default const& default_) const
-#if BOOST_WORKAROUND(BOOST_MSVC, == 1300)
- volatile
-#endif
- {
- return aux::lazy_default<Tag, Default>(default_);
- }
-#endif
-
- public: // Insurance against ODR violations
-
- // People will need to define these keywords in header files. To
- // prevent ODR violations, it's important that the keyword used in
- // every instantiation of a function template is the same object.
- // We provide a reference to a common instance of each keyword
- // object and prevent construction by users.
- static keyword<Tag> const instance;
-
- // This interface is deprecated
- static keyword<Tag>& get()
- {
- return const_cast<keyword<Tag>&>(instance);
- }
-};
-
-template <class Tag>
-keyword<Tag> const keyword<Tag>::instance = {};
-
-// Reduces boilerplate required to declare and initialize keywords
-// without violating ODR. Declares a keyword tag type with the given
-// name in namespace tag_namespace, and declares and initializes a
-// reference in an anonymous namespace to a singleton instance of that
-// type.
-
-#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
-
-# define BOOST_PARAMETER_KEYWORD(tag_namespace,name) \
- namespace tag_namespace \
- { \
- struct name \
- { \
- static char const* keyword_name() \
- { \
- return #name; \
- } \
- }; \
- } \
- static ::boost::parameter::keyword<tag_namespace::name> const& name \
- = ::boost::parameter::keyword<tag_namespace::name>::instance;
-
-#else
-
-#define BOOST_PARAMETER_KEYWORD(tag_namespace,name) \
- namespace tag_namespace \
- { \
- struct name \
- { \
- static char const* keyword_name() \
- { \
- return #name; \
- } \
- }; \
- } \
- namespace \
- { \
- ::boost::parameter::keyword<tag_namespace::name> const& name \
- = ::boost::parameter::keyword<tag_namespace::name>::instance;\
- }
-
-#endif
-
-}} // namespace boost::parameter
-
-#endif // KEYWORD_050328_HPP
-
diff --git a/src/third_party/boost-1.56.0/boost/parameter/parameters.hpp b/src/third_party/boost-1.56.0/boost/parameter/parameters.hpp
deleted file mode 100755
index 97e102434e8..00000000000
--- a/src/third_party/boost-1.56.0/boost/parameter/parameters.hpp
+++ /dev/null
@@ -1,931 +0,0 @@
-// Copyright David Abrahams, Daniel Wallin 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 BOOST_PARAMETERS_031014_HPP
-#define BOOST_PARAMETERS_031014_HPP
-
-#include <boost/detail/is_xxx.hpp>
-
-#include <boost/type_traits/is_const.hpp>
-
-#include <boost/mpl/lambda.hpp>
-#include <boost/mpl/apply.hpp>
-#include <boost/mpl/always.hpp>
-#include <boost/mpl/and.hpp>
-#include <boost/mpl/or.hpp>
-#include <boost/mpl/if.hpp>
-#include <boost/mpl/identity.hpp>
-#include <boost/mpl/not.hpp>
-#include <boost/mpl/eval_if.hpp>
-#include <boost/mpl/pair.hpp>
-
-#include <boost/type_traits/is_same.hpp>
-#include <boost/type_traits/remove_reference.hpp>
-
-#include <boost/preprocessor/repetition/enum.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_trailing_params.hpp>
-#include <boost/preprocessor/arithmetic/sub.hpp>
-#include <boost/preprocessor/repetition/repeat.hpp>
-#include <boost/preprocessor/repetition/enum_shifted.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/enum_shifted_params.hpp>
-#include <boost/preprocessor/seq/elem.hpp>
-#include <boost/preprocessor/iteration/iterate.hpp>
-#include <boost/preprocessor/facilities/intercept.hpp>
-#include <boost/preprocessor/cat.hpp>
-
-#include <boost/parameter/aux_/arg_list.hpp>
-#include <boost/parameter/aux_/yesno.hpp>
-#include <boost/parameter/aux_/void.hpp>
-#include <boost/parameter/aux_/default.hpp>
-#include <boost/parameter/aux_/unwrap_cv_reference.hpp>
-#include <boost/parameter/aux_/tagged_argument.hpp>
-#include <boost/parameter/aux_/tag.hpp>
-#include <boost/parameter/aux_/template_keyword.hpp>
-#include <boost/parameter/aux_/set.hpp>
-#include <boost/parameter/config.hpp>
-
-namespace parameter_
-{
- template <class T>
- struct unmatched_argument
- {
- BOOST_MPL_ASSERT((boost::is_same<T,void>));
- typedef int type;
- };
-} // namespace parameter_
-
-namespace boost {
-
-template<class T> class reference_wrapper;
-
-namespace parameter {
-
-namespace aux { struct use_default {}; }
-
-// These templates can be used to describe the treatment of particular
-// named parameters for the purposes of overload elimination with
-// SFINAE, by placing specializations in the parameters<...> list. In
-// order for a treated function to participate in overload resolution:
-//
-// - all keyword tags wrapped in required<...> must have a matching
-// actual argument
-//
-// - The actual argument type matched by every keyword tag
-// associated with a predicate must satisfy that predicate
-//
-// If a keyword k is specified without an optional<...> or
-// required<...>, wrapper, it is treated as though optional<k> were
-// specified.
-//
-// If a keyword k is specified with deduced<...>, that keyword
-// will be automatically deduced from the argument list.
-//
-template <class Tag, class Predicate = aux::use_default>
-struct required
-{
- typedef Tag key_type;
- typedef Predicate predicate;
-};
-
-template <class Tag, class Predicate = aux::use_default>
-struct optional
-{
- typedef Tag key_type;
- typedef Predicate predicate;
-};
-
-template <class Tag>
-struct deduced
-{
- typedef Tag key_type;
-};
-
-namespace aux
-{
- // Defines metafunctions, is_required and is_optional, that
- // identify required<...>, optional<...> and deduced<...> specializations.
- BOOST_DETAIL_IS_XXX_DEF(required, required, 2)
- BOOST_DETAIL_IS_XXX_DEF(optional, optional, 2)
- BOOST_DETAIL_IS_XXX_DEF(deduced_aux, deduced, 1)
-
- template <class S>
- struct is_deduced0
- : is_deduced_aux<
- typename S::key_type
- >::type
- {};
-
- template <class S>
- struct is_deduced
- : mpl::eval_if<
- mpl::or_<
- is_optional<S>, is_required<S>
- >
- , is_deduced0<S>
- , mpl::false_
- >::type
- {};
-
- //
- // key_type, has_default, and predicate --
- //
- // These metafunctions accept a ParameterSpec and extract the
- // keyword tag, whether or not a default is supplied for the
- // parameter, and the predicate that the corresponding actual
- // argument type is required match.
- //
- // a ParameterSpec is a specialization of either keyword<...>,
- // required<...>, optional<...>
- //
-
- // helper for key_type<...>, below.
- template <class T>
- struct get_tag_type0
- {
- typedef typename T::key_type type;
- };
-
- template <class T>
- struct get_tag_type
- : mpl::eval_if<
- is_deduced_aux<typename T::key_type>
- , get_tag_type0<typename T::key_type>
- , mpl::identity<typename T::key_type>
- >
- {};
-
- template <class T>
- struct tag_type
- : mpl::eval_if<
- mpl::or_<
- is_optional<T>
- , is_required<T>
- >
- , get_tag_type<T>
- , mpl::identity<T>
- >
- {};
-
- template <class T>
- struct has_default
- : mpl::not_<is_required<T> >
- {};
-
- // helper for get_predicate<...>, below
- template <class T>
- struct get_predicate_or_default
- {
- typedef T type;
- };
-
- template <>
- struct get_predicate_or_default<use_default>
- {
- typedef mpl::always<mpl::true_> type;
- };
-
- // helper for predicate<...>, below
- template <class T>
- struct get_predicate
- {
- typedef typename
- get_predicate_or_default<typename T::predicate>::type
- type;
- };
-
- template <class T>
- struct predicate
- : mpl::eval_if<
- mpl::or_<
- is_optional<T>
- , is_required<T>
- >
- , get_predicate<T>
- , mpl::identity<mpl::always<mpl::true_> >
- >
- {
- };
-
-
- // Converts a ParameterSpec into a specialization of
- // parameter_requirements. We need to do this in order to get the
- // tag_type into the type in a way that can be conveniently matched
- // by a satisfies(...) member function in arg_list.
- template <class ParameterSpec>
- struct as_parameter_requirements
- {
- typedef parameter_requirements<
- typename tag_type<ParameterSpec>::type
- , typename predicate<ParameterSpec>::type
- , typename has_default<ParameterSpec>::type
- > type;
- };
-
- template <class T>
- struct is_named_argument
- : mpl::or_<
- is_template_keyword<T>
- , is_tagged_argument<T>
- >
- {};
-
- // Returns mpl::true_ iff the given ParameterRequirements are
- // satisfied by ArgList.
- template <class ArgList, class ParameterRequirements>
- struct satisfies
- {
-#if BOOST_WORKAROUND(BOOST_MSVC, == 1310)
- // VC7.1 can't handle the sizeof() implementation below,
- // so we use this instead.
- typedef typename mpl::apply_wrap3<
- typename ArgList::binding
- , typename ParameterRequirements::keyword
- , void_
- , mpl::false_
- >::type bound;
-
- typedef typename mpl::eval_if<
- is_same<bound, void_>
- , typename ParameterRequirements::has_default
- , mpl::apply_wrap2<
- typename mpl::lambda<
- typename ParameterRequirements::predicate, lambda_tag
- >::type
- , bound
- , ArgList
- >
- >::type type;
-#else
- BOOST_STATIC_CONSTANT(
- bool, value = (
- sizeof(
- aux::to_yesno(
- ArgList::satisfies((ParameterRequirements*)0, (ArgList*)0)
- )
- ) == sizeof(yes_tag)
- )
- );
-
- typedef mpl::bool_<satisfies::value> type;
-#endif
- };
-
- // Returns mpl::true_ if the requirements of the given ParameterSpec
- // are satisfied by ArgList.
- template <class ArgList, class ParameterSpec>
- struct satisfies_requirements_of
- : satisfies<
- ArgList
- , typename as_parameter_requirements<ParameterSpec>::type
- >
- {};
-
- // Tags a deduced argument Arg with the keyword tag of Spec using TagFn.
- // Returns the tagged argument and the mpl::set<> UsedArgs with the
- // tag of Spec inserted.
- template <class UsedArgs, class Spec, class Arg, class TagFn>
- struct tag_deduced
- {
- typedef mpl::pair<
- typename mpl::apply_wrap2<TagFn, typename tag_type<Spec>::type, Arg>::type
- , typename aux::insert_<UsedArgs, typename tag_type<Spec>::type>::type
- > type;
- };
-
- template <
- class Argument
- , class ArgumentPack
- , class DeducedArgs
- , class UsedArgs
- , class TagFn
- >
- struct deduce_tag;
-
- // Tag type passed to MPL lambda.
- struct lambda_tag;
-
- // Helper for deduce_tag<> below.
- template <
- class Argument
- , class ArgumentPack
- , class DeducedArgs
- , class UsedArgs
- , class TagFn
- >
- struct deduce_tag0
- {
- typedef typename DeducedArgs::spec spec;
-
- typedef typename mpl::apply_wrap2<
- typename mpl::lambda<
- typename spec::predicate, lambda_tag
- >::type
- , Argument
- , ArgumentPack
- >::type condition;
-
- // Deduced parameter matches several arguments.
-
- BOOST_MPL_ASSERT((
- mpl::not_<mpl::and_<
- condition
- , aux::has_key_<UsedArgs, typename tag_type<spec>::type>
- > >
- ));
-
- typedef typename mpl::eval_if<
- condition
- , tag_deduced<UsedArgs, spec, Argument, TagFn>
- , deduce_tag<Argument, ArgumentPack, typename DeducedArgs::tail, UsedArgs, TagFn>
- >::type type;
- };
-
- // Tries to deduced a keyword tag for a given Argument.
- // Returns an mpl::pair<> consisting of the tagged_argument<>,
- // and an mpl::set<> where the new tag has been inserted.
- //
- // Argument: The argument type to be tagged.
- //
- // ArgumentPack: The ArgumentPack built so far.
- //
- // DeducedArgs: A specialization of deduced_item<> (see below).
- // A list containing only the deduced ParameterSpecs.
- //
- // UsedArgs: An mpl::set<> containing the keyword tags used so far.
- //
- // TagFn: A metafunction class used to tag positional or deduced
- // arguments with a keyword tag.
-
- template <
- class Argument
- , class ArgumentPack
- , class DeducedArgs
- , class UsedArgs
- , class TagFn
- >
- struct deduce_tag
- {
- typedef typename mpl::eval_if<
- is_same<DeducedArgs, void_>
- , mpl::pair<void_, UsedArgs>
- , deduce_tag0<Argument, ArgumentPack, DeducedArgs, UsedArgs, TagFn>
- >::type type;
- };
-
- template <
- class List
- , class DeducedArgs
- , class TagFn
- , class Positional
- , class UsedArgs
- , class ArgumentPack
- , class Error
- >
- struct make_arg_list_aux;
-
- // Inserts Tagged::key_type into the UserArgs set.
- // Extra indirection to lazily evaluate Tagged::key_type.
- template <class UsedArgs, class Tagged>
- struct insert_tagged
- {
- typedef typename aux::insert_<
- UsedArgs, typename Tagged::key_type
- >::type type;
- };
-
- // Borland needs the insane extra-indirection workaround below
- // so that it doesn't magically drop the const qualifier from
- // the argument type.
-
- template <
- class List
- , class DeducedArgs
- , class TagFn
- , class Positional
- , class UsedArgs
- , class ArgumentPack
-#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
- , class argument
-#endif
- , class Error
- >
-#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
- struct make_arg_list00
-#else
- struct make_arg_list0
-#endif
- {
-#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
- typedef typename List::arg argument;
-#endif
- typedef typename List::spec parameter_spec;
- typedef typename tag_type<parameter_spec>::type tag_;
-
- typedef is_named_argument<argument> is_tagged;
-
- // If this argument is either explicitly tagged or a deduced
- // parameter, we turn off positional matching.
- typedef mpl::and_<
- mpl::not_<
- mpl::or_<is_deduced<parameter_spec>, is_tagged>
- >
- , Positional
- > positional;
-
- // If this parameter is explicitly tagged we add it to the
- // used-parmeters set. We only really need to add parameters
- // that are deduced, but we would need a way to check if
- // a given tag corresponds to a deduced parameter spec.
- typedef typename mpl::eval_if<
- is_tagged
- , insert_tagged<UsedArgs, argument>
- , mpl::identity<UsedArgs>
- >::type used_args;
-
- // If this parameter is neither explicitly tagged, nor
- // positionally matched; deduce the tag from the deduced
- // parameter specs.
- typedef typename mpl::eval_if<
- mpl::or_<is_tagged, positional>
- , mpl::pair<void_, used_args>
- , deduce_tag<argument, ArgumentPack, DeducedArgs, used_args, TagFn>
- >::type deduced_data;
-
- // If this parameter is explicitly tagged..
- typedef typename mpl::eval_if<
- is_tagged
- , mpl::identity<argument> // .. just use it
- , mpl::eval_if< // .. else, if positional matching is turned on..
- positional
- , mpl::apply_wrap2<TagFn, tag_, argument> // .. tag it positionally
- , mpl::first<deduced_data> // .. else, use the deduced tag
- >
- >::type tagged;
-
- // We build the arg_list incrementally as we go, prepending new
- // nodes.
-
- typedef typename mpl::if_<
- mpl::and_<
- is_same<Error, void_>
- , is_same<tagged, void_>
- >
- , parameter_::unmatched_argument<argument>
- , void_
- >::type error;
-
- typedef typename mpl::if_<
- is_same<tagged, void_>
- , ArgumentPack
- , arg_list<tagged, ArgumentPack>
- >::type argument_pack;
-
- typedef typename make_arg_list_aux<
- typename List::tail
- , DeducedArgs
- , TagFn
- , positional
- , typename deduced_data::second
- , argument_pack
- , error
- >::type type;
- };
-
-#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
- template <
- class List
- , class DeducedArgs
- , class TagFn
- , class Positional
- , class UsedArgs
- , class ArgumentPack
- , class Error
- >
- struct make_arg_list0
- {
- typedef typename mpl::eval_if<
- typename List::is_arg_const
- , make_arg_list00<
- List
- , DeducedArgs
- , TagFn
- , Positional
- , UsedArgs
- , ArgumentPack
- , typename List::arg const
- , Error
- >
- , make_arg_list00<
- List
- , DeducedArgs
- , TagFn
- , Positional
- , UsedArgs
- , ArgumentPack
- , typename List::arg
- , Error
- >
- >::type type;
- };
-#endif
-
- // Returns an ArgumentPack where the list of arguments has
- // been tagged with keyword tags.
- //
- // List: A specialization of item<> (see below). Contains
- // both the ordered ParameterSpecs, and the given arguments.
- //
- // DeducedArgs: A specialization of deduced_item<> (see below).
- // A list containing only the deduced ParameterSpecs.
- //
- // TagFn: A metafunction class used to tag positional or deduced
- // arguments with a keyword tag.
- //
- // Position: An mpl::bool_<> specialization indicating if positional
- // matching is to be performed.
- //
- // DeducedSet: An mpl::set<> containing the keyword tags used so far.
- //
- // ArgumentPack: The ArgumentPack built so far. This is initially an
- // empty_arg_list and is built incrementally.
- //
-
- template <
- class List
- , class DeducedArgs
- , class TagFn
- , class Positional
- , class DeducedSet
- , class ArgumentPack
- , class Error
- >
- struct make_arg_list_aux
- {
- typedef typename mpl::eval_if<
- is_same<List, void_>
- , mpl::identity<mpl::pair<ArgumentPack, Error> >
- , make_arg_list0<List, DeducedArgs, TagFn, Positional, DeducedSet, ArgumentPack, Error>
- >::type type;
- };
-
- // VC6.5 was choking on the default parameters for make_arg_list_aux, so
- // this just forwards to that adding in the defaults.
- template <
- class List
- , class DeducedArgs
- , class TagFn
- , class EmitErrors = mpl::true_
- >
- struct make_arg_list
- {
- typedef typename make_arg_list_aux<
- List, DeducedArgs, TagFn, mpl::true_, aux::set0, empty_arg_list, void_
- >::type type;
- };
-
- // A parameter spec item typelist.
- template <class Spec, class Arg, class Tail = void_>
- struct item
- {
- typedef Spec spec;
-
-#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
- typedef is_const<Arg> is_arg_const;
-#endif
-
- typedef Arg arg;
- typedef Tail tail;
- };
-
- template <class Spec, class Arg, class Tail>
- struct make_item
- {
- typedef item<Spec, Arg, typename Tail::type> type;
- };
-
- // Creates a item typelist.
- template <class Spec, class Arg, class Tail>
- struct make_items
- {
- typedef typename mpl::eval_if<
- is_same<Arg, void_>
- , mpl::identity<void_>
- , make_item<Spec, Arg, Tail>
- >::type type;
- };
-
- // A typelist that stored deduced parameter specs.
- template <class ParameterSpec, class Tail = void_>
- struct deduced_item
- {
- typedef ParameterSpec spec;
- typedef Tail tail;
- };
-
- // Evaluate Tail and construct deduced_item list.
- template <class Spec, class Tail>
- struct make_deduced_item
- {
- typedef deduced_item<Spec, typename Tail::type> type;
- };
-
- template <class Spec, class Tail>
- struct make_deduced_items
- {
- typedef typename mpl::eval_if<
- is_same<Spec, void_>
- , mpl::identity<void_>
- , mpl::eval_if<
- is_deduced<Spec>
- , make_deduced_item<Spec, Tail>
- , Tail
- >
- >::type type;
- };
-
- // Generates:
- //
- // make<
- // parameter_spec#0, argument_type#0
- // , make<
- // parameter_spec#1, argument_type#1
- // , ... mpl::identity<aux::empty_arg_list>
- // ...>
- // >
-#define BOOST_PARAMETER_make_arg_list(z, n, names) \
- BOOST_PP_SEQ_ELEM(0,names)< \
- BOOST_PP_CAT(BOOST_PP_SEQ_ELEM(1,names), n), \
- BOOST_PP_CAT(BOOST_PP_SEQ_ELEM(2,names), n),
-
-#define BOOST_PARAMETER_right_angle(z, n, text) >
-
-#define BOOST_PARAMETER_build_arg_list(n, make, parameter_spec, argument_type) \
- BOOST_PP_REPEAT( \
- n, BOOST_PARAMETER_make_arg_list, (make)(parameter_spec)(argument_type)) \
- mpl::identity<void_> \
- BOOST_PP_REPEAT(n, BOOST_PARAMETER_right_angle, _)
-
-#define BOOST_PARAMETER_make_deduced_list(z, n, names) \
- BOOST_PP_SEQ_ELEM(0,names)< \
- BOOST_PP_CAT(BOOST_PP_SEQ_ELEM(1,names), n),
-
-#define BOOST_PARAMETER_build_deduced_list(n, make, parameter_spec) \
- BOOST_PP_REPEAT( \
- n, BOOST_PARAMETER_make_deduced_list, (make)(parameter_spec)) \
- mpl::identity<void_> \
- BOOST_PP_REPEAT(n, BOOST_PARAMETER_right_angle, _)
-
- struct tag_keyword_arg
- {
- template <class K, class T>
- struct apply
- : tag<K,T>
- {};
- };
-
- struct tag_template_keyword_arg
- {
- template <class K, class T>
- struct apply
- {
- typedef template_keyword<K,T> type;
- };
- };
-
-} // namespace aux
-
-#define BOOST_PARAMETER_FORWARD_TYPEDEF(z, i, names) \
- typedef BOOST_PP_CAT(BOOST_PP_SEQ_ELEM(0,names),i) BOOST_PP_CAT(BOOST_PP_SEQ_ELEM(1,names),i);
-
-#define BOOST_PARAMETER_FORWARD_TYPEDEFS(n, src, dest) \
- BOOST_PP_REPEAT(n, BOOST_PARAMETER_FORWARD_TYPEDEF, (src)(dest))
-
-
-#define BOOST_PARAMETER_TEMPLATE_ARGS(z, n, text) class BOOST_PP_CAT(PS, n) = void_
-
-template<
- class PS0
- , BOOST_PP_ENUM_SHIFTED(BOOST_PARAMETER_MAX_ARITY, BOOST_PARAMETER_TEMPLATE_ARGS, _)
->
-struct parameters
-{
-#undef BOOST_PARAMETER_TEMPLATE_ARGS
-
- typedef typename BOOST_PARAMETER_build_deduced_list(
- BOOST_PARAMETER_MAX_ARITY, aux::make_deduced_items, PS
- )::type deduced_list;
-
- // if the elements of NamedList match the criteria of overload
- // resolution, returns a type which can be constructed from
- // parameters. Otherwise, this is not a valid metafunction (no nested
- // ::type).
-
-
-#if ! defined(BOOST_NO_SFINAE) && ! BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x592))
- // If NamedList satisfies the PS0, PS1, ..., this is a
- // metafunction returning parameters. Otherwise it
- // has no nested ::type.
- template <class ArgumentPackAndError>
- struct match_base
- : mpl::if_<
- // mpl::and_<
- // aux::satisfies_requirements_of<NamedList,PS0>
- // , mpl::and_<
- // aux::satisfies_requirements_of<NamedList,PS1>...
- // ..., mpl::true_
- // ...> >
-
-# define BOOST_PARAMETER_satisfies(z, n, text) \
- mpl::and_< \
- aux::satisfies_requirements_of< \
- typename mpl::first<ArgumentPackAndError>::type \
- , BOOST_PP_CAT(PS, n)> \
- ,
- mpl::and_<
- is_same<typename mpl::second<ArgumentPackAndError>::type, void_>
- , BOOST_PP_REPEAT(BOOST_PARAMETER_MAX_ARITY, BOOST_PARAMETER_satisfies, _)
- mpl::true_
- BOOST_PP_REPEAT(BOOST_PARAMETER_MAX_ARITY, BOOST_PARAMETER_right_angle, _)
- >
-
-# undef BOOST_PARAMETER_satisfies
-
- , mpl::identity<parameters>
- , void_
- >
- {};
-#endif
-
- // Specializations are to be used as an optional argument to
- // eliminate overloads via SFINAE
- template<
-#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
- // Borland simply can't handle default arguments in member
- // class templates. People wishing to write portable code can
- // explicitly specify BOOST_PARAMETER_MAX_ARITY arguments
- BOOST_PP_ENUM_PARAMS(BOOST_PARAMETER_MAX_ARITY, class A)
-#else
- BOOST_PP_ENUM_BINARY_PARAMS(
- BOOST_PARAMETER_MAX_ARITY, class A, = void_ BOOST_PP_INTERCEPT
- )
-#endif
- >
- struct match
-# if ! defined(BOOST_NO_SFINAE) && ! BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x592))
- : match_base<
- typename aux::make_arg_list<
- typename BOOST_PARAMETER_build_arg_list(
- BOOST_PARAMETER_MAX_ARITY, aux::make_items, PS, A
- )::type
- , deduced_list
- , aux::tag_keyword_arg
- , mpl::false_ // Don't emit errors when doing SFINAE
- >::type
- >::type
- {};
-# else
- {
- typedef parameters<
- BOOST_PP_ENUM_PARAMS(BOOST_PARAMETER_MAX_ARITY, PS)
- > type;
- };
-# endif
-
- // Metafunction that returns an ArgumentPack.
-
- // TODO, bind has to instantiate the error type in the result
- // of make_arg_list.
-
- template <
-#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
- // Borland simply can't handle default arguments in member
- // class templates. People wishing to write portable code can
- // explicitly specify BOOST_PARAMETER_MAX_ARITY arguments
- BOOST_PP_ENUM_PARAMS(BOOST_PARAMETER_MAX_ARITY, class A)
-#else
- BOOST_PP_ENUM_BINARY_PARAMS(
- BOOST_PARAMETER_MAX_ARITY, class A, = void_ BOOST_PP_INTERCEPT
- )
-#endif
- >
- struct bind
- {
- typedef typename aux::make_arg_list<
- typename BOOST_PARAMETER_build_arg_list(
- BOOST_PARAMETER_MAX_ARITY, aux::make_items, PS, A
- )::type
- , deduced_list
- , aux::tag_template_keyword_arg
- >::type result;
-
- typedef typename mpl::first<result>::type type;
- };
-
- BOOST_PARAMETER_FORWARD_TYPEDEFS(BOOST_PARAMETER_MAX_ARITY, PS, parameter_spec)
-
- //
- // The function call operator is used to build an arg_list that
- // labels the positional parameters and maintains whatever other
- // tags may have been specified by the caller.
- //
- // !!!NOTE!!!
- //
- // The make_arg_list<> produces a reversed arg_list, so
- // we need to pass the arguments to its constructor
- // reversed.
- //
- aux::empty_arg_list operator()() const
- {
- return aux::empty_arg_list();
- }
-
- template<class A0>
- typename mpl::first<
- typename aux::make_arg_list<
- aux::item<
- PS0,A0
- >
- , deduced_list
- , aux::tag_keyword_arg
- >::type
- >::type
- operator()(A0& a0) const
- {
- typedef typename aux::make_arg_list<
- aux::item<
- PS0,A0
- >
- , deduced_list
- , aux::tag_keyword_arg
- >::type result;
-
- typedef typename mpl::first<result>::type result_type;
- typedef typename mpl::second<result>::type error;
- error();
-
- return result_type(
- a0
- // , void_(), void_(), void_() ...
- BOOST_PP_ENUM_TRAILING_PARAMS(
- BOOST_PP_SUB(BOOST_PARAMETER_MAX_ARITY, 1)
- , aux::void_reference() BOOST_PP_INTERCEPT)
- );
- }
-
- template<class A0, class A1>
- typename mpl::first<
- typename aux::make_arg_list<
- aux::item<
- PS0,A0
- , aux::item<
- PS1,A1
- >
- >
- , deduced_list
- , aux::tag_keyword_arg
- >::type
- >::type
- operator()(A0& a0, A1& a1) const
- {
- typedef typename aux::make_arg_list<
- aux::item<
- PS0,A0
- , aux::item<
- PS1,A1
- >
- >
- , deduced_list
- , aux::tag_keyword_arg
- >::type result;
-
- typedef typename mpl::first<result>::type result_type;
- typedef typename mpl::second<result>::type error;
- error();
-
- return result_type(
- a1,a0
- // , void_(), void_() ...
- BOOST_PP_ENUM_TRAILING_PARAMS(
- BOOST_PP_SUB(BOOST_PARAMETER_MAX_ARITY, 2)
- , aux::void_reference() BOOST_PP_INTERCEPT)
- );
- }
-
- // Higher arities are handled by the preprocessor
-#define BOOST_PP_ITERATION_PARAMS_1 (3,( \
- 3,BOOST_PARAMETER_MAX_ARITY,<boost/parameter/aux_/overloads.hpp> \
- ))
-#include BOOST_PP_ITERATE()
-
-};
-
-} // namespace parameter
-
-} // namespace boost
-
-#endif // BOOST_PARAMETERS_031014_HPP
-