1//////////////////////////////////////////////////////////////////////////////
2// (C) Copyright John Maddock 2000.
3// (C) Copyright Ion Gaztanaga 2005-2015.
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// The alignment and Type traits implementation comes from
12// John Maddock's TypeTraits library.
13//
14// Some other tricks come from Howard Hinnant's papers and StackOverflow replies
15//////////////////////////////////////////////////////////////////////////////
16#ifndef BOOST_CONTAINER_CONTAINER_DETAIL_TYPE_TRAITS_HPP
17#define BOOST_CONTAINER_CONTAINER_DETAIL_TYPE_TRAITS_HPP
18
19#ifndef BOOST_CONFIG_HPP
20# include <boost/config.hpp>
21#endif
22
23#if defined(BOOST_HAS_PRAGMA_ONCE)
24# pragma once
25#endif
26
27#include <boost/move/detail/type_traits.hpp>
28
29namespace boost {
30namespace container {
31namespace container_detail {
32
33using ::boost::move_detail::enable_if;
34using ::boost::move_detail::enable_if_and;
35using ::boost::move_detail::is_same;
36using ::boost::move_detail::is_different;
37using ::boost::move_detail::is_pointer;
38using ::boost::move_detail::add_reference;
39using ::boost::move_detail::add_const;
40using ::boost::move_detail::add_const_reference;
41using ::boost::move_detail::remove_const;
42using ::boost::move_detail::remove_reference;
43using ::boost::move_detail::make_unsigned;
44using ::boost::move_detail::is_floating_point;
45using ::boost::move_detail::is_integral;
46using ::boost::move_detail::is_enum;
47using ::boost::move_detail::is_pod;
48using ::boost::move_detail::is_empty;
49using ::boost::move_detail::is_trivially_destructible;
50using ::boost::move_detail::is_trivially_default_constructible;
51using ::boost::move_detail::is_trivially_copy_constructible;
52using ::boost::move_detail::is_trivially_move_constructible;
53using ::boost::move_detail::is_trivially_copy_assignable;
54using ::boost::move_detail::is_trivially_move_assignable;
55using ::boost::move_detail::is_nothrow_default_constructible;
56using ::boost::move_detail::is_nothrow_copy_constructible;
57using ::boost::move_detail::is_nothrow_move_constructible;
58using ::boost::move_detail::is_nothrow_copy_assignable;
59using ::boost::move_detail::is_nothrow_move_assignable;
60using ::boost::move_detail::is_nothrow_swappable;
61using ::boost::move_detail::alignment_of;
62using ::boost::move_detail::aligned_storage;
63using ::boost::move_detail::nat;
64using ::boost::move_detail::max_align_t;
65
66} //namespace container_detail {
67} //namespace container {
68} //namespace boost {
69
70#endif //#ifndef BOOST_CONTAINER_CONTAINER_DETAIL_TYPE_TRAITS_HPP
71