1//////////////////////////////////////////////////////////////////////////////
2//
3// (C) Copyright Ion Gaztanaga 2005-2013.
4//
5// Distributed under the Boost Software License, Version 1.0.
6// (See accompanying file LICENSE_1_0.txt or copy at
7// http://www.boost.org/LICENSE_1_0.txt)
8//
9// See http://www.boost.org/libs/container for documentation.
10//
11//////////////////////////////////////////////////////////////////////////////
12
13#ifndef BOOST_CONTAINER_CONTAINER_DETAIL_MPL_HPP
14#define BOOST_CONTAINER_CONTAINER_DETAIL_MPL_HPP
15
16#ifndef BOOST_CONFIG_HPP
17# include <boost/config.hpp>
18#endif
19
20#if defined(BOOST_HAS_PRAGMA_ONCE)
21# pragma once
22#endif
23
24#include <boost/container/detail/config_begin.hpp>
25#include <boost/container/detail/workaround.hpp>
26#include <boost/move/detail/type_traits.hpp>
27#include <boost/intrusive/detail/mpl.hpp>
28
29#include <cstddef>
30
31namespace boost {
32namespace container {
33namespace container_detail {
34
35using boost::move_detail::integral_constant;
36using boost::move_detail::true_type;
37using boost::move_detail::false_type;
38using boost::move_detail::enable_if_c;
39using boost::move_detail::enable_if;
40using boost::move_detail::enable_if_convertible;
41using boost::move_detail::disable_if_c;
42using boost::move_detail::disable_if;
43using boost::move_detail::disable_if_convertible;
44using boost::move_detail::is_convertible;
45using boost::move_detail::if_c;
46using boost::move_detail::if_;
47using boost::move_detail::identity;
48using boost::move_detail::bool_;
49using boost::move_detail::true_;
50using boost::move_detail::false_;
51using boost::move_detail::yes_type;
52using boost::move_detail::no_type;
53using boost::move_detail::bool_;
54using boost::move_detail::true_;
55using boost::move_detail::false_;
56using boost::move_detail::unvoid_ref;
57using boost::move_detail::and_;
58using boost::move_detail::or_;
59using boost::move_detail::not_;
60using boost::move_detail::enable_if_and;
61using boost::move_detail::disable_if_and;
62using boost::move_detail::enable_if_or;
63using boost::move_detail::disable_if_or;
64
65template <class FirstType>
66struct select1st
67{
68 typedef FirstType type;
69
70 template<class T>
71 const type& operator()(const T& x) const
72 { return x.first; }
73
74 template<class T>
75 type& operator()(T& x)
76 { return const_cast<type&>(x.first); }
77};
78
79} //namespace container_detail {
80} //namespace container {
81} //namespace boost {
82
83#include <boost/container/detail/config_end.hpp>
84
85#endif //#ifndef BOOST_CONTAINER_CONTAINER_DETAIL_MPL_HPP
86
87