| Index: third_party/boost/boost/tuple/tuple.hpp
|
| diff --git a/third_party/boost/boost/tuple/tuple.hpp b/third_party/boost/boost/tuple/tuple.hpp
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..7703597e10ce1a53abb0ed35bec3d24482941fb9
|
| --- /dev/null
|
| +++ b/third_party/boost/boost/tuple/tuple.hpp
|
| @@ -0,0 +1,90 @@
|
| +// tuple.hpp - Boost Tuple Library --------------------------------------
|
| +
|
| +// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
|
| +//
|
| +// Distributed under the Boost Software License, Version 1.0. (See
|
| +// accompanying file LICENSE_1_0.txt or copy at
|
| +// http://www.boost.org/LICENSE_1_0.txt)
|
| +
|
| +// For more information, see http://www.boost.org
|
| +
|
| +// -----------------------------------------------------------------
|
| +
|
| +#ifndef BOOST_TUPLE_HPP
|
| +#define BOOST_TUPLE_HPP
|
| +
|
| +#if defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730
|
| +// Work around a compiler bug.
|
| +// boost::python::tuple has to be seen by the compiler before the
|
| +// boost::tuple class template.
|
| +namespace boost { namespace python { class tuple; }}
|
| +#endif
|
| +
|
| +#include "boost/config.hpp"
|
| +#include "boost/static_assert.hpp"
|
| +
|
| +#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
|
| +// The MSVC version
|
| +#include "boost/tuple/detail/tuple_basic_no_partial_spec.hpp"
|
| +
|
| +#else
|
| +// other compilers
|
| +#include "boost/ref.hpp"
|
| +#include "boost/tuple/detail/tuple_basic.hpp"
|
| +
|
| +#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
| +
|
| +namespace boost {
|
| +
|
| +using tuples::tuple;
|
| +using tuples::make_tuple;
|
| +using tuples::tie;
|
| +#if !defined(BOOST_NO_USING_TEMPLATE)
|
| +using tuples::get;
|
| +#elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
|
| +//
|
| +// The "using tuples::get" statement causes the
|
| +// Borland compiler to ICE, use forwarding
|
| +// functions instead:
|
| +//
|
| +template<int N, class HT, class TT>
|
| +inline typename tuples::access_traits<
|
| + typename tuples::element<N, tuples::cons<HT, TT> >::type
|
| + >::non_const_type
|
| +get(tuples::cons<HT, TT>& c) {
|
| + return tuples::get<N,HT,TT>(c);
|
| +}
|
| +// get function for const cons-lists, returns a const reference to
|
| +// the element. If the element is a reference, returns the reference
|
| +// as such (that is, can return a non-const reference)
|
| +template<int N, class HT, class TT>
|
| +inline typename tuples::access_traits<
|
| + typename tuples::element<N, tuples::cons<HT, TT> >::type
|
| + >::const_type
|
| +get(const tuples::cons<HT, TT>& c) {
|
| + return tuples::get<N,HT,TT>(c);
|
| +}
|
| +#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
| +//
|
| +// MSVC, using declarations don't mix with templates well,
|
| +// so use forwarding functions instead:
|
| +//
|
| +template<int N, typename Head, typename Tail>
|
| +typename tuples::detail::element_ref<N, tuples::cons<Head, Tail> >::RET
|
| +get(tuples::cons<Head, Tail>& t, tuples::detail::workaround_holder<N>* = 0)
|
| +{
|
| + return tuples::detail::get_class<N>::get(t);
|
| +}
|
| +
|
| +template<int N, typename Head, typename Tail>
|
| +typename tuples::detail::element_const_ref<N, tuples::cons<Head, Tail> >::RET
|
| +get(const tuples::cons<Head, Tail>& t, tuples::detail::workaround_holder<N>* = 0)
|
| +{
|
| + return tuples::detail::get_class<N>::get(t);
|
| +}
|
| +#endif // BOOST_NO_USING_TEMPLATE
|
| +
|
| +} // end namespace boost
|
| +
|
| +
|
| +#endif // BOOST_TUPLE_HPP
|
|
|