summaryrefslogtreecommitdiff
path: root/boost/container/detail/type_traits.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/container/detail/type_traits.hpp')
-rw-r--r--boost/container/detail/type_traits.hpp39
1 files changed, 33 insertions, 6 deletions
diff --git a/boost/container/detail/type_traits.hpp b/boost/container/detail/type_traits.hpp
index 0e096e54e3..9ff361454a 100644
--- a/boost/container/detail/type_traits.hpp
+++ b/boost/container/detail/type_traits.hpp
@@ -1,6 +1,6 @@
//////////////////////////////////////////////////////////////////////////////
// (C) Copyright John Maddock 2000.
-// (C) Copyright Ion Gaztanaga 2005-2012.
+// (C) Copyright Ion Gaztanaga 2005-2013.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
@@ -15,13 +15,12 @@
#ifndef BOOST_CONTAINER_CONTAINER_DETAIL_TYPE_TRAITS_HPP
#define BOOST_CONTAINER_CONTAINER_DETAIL_TYPE_TRAITS_HPP
-#if (defined _MSC_VER) && (_MSC_VER >= 1200)
+#if defined(_MSC_VER)
# pragma once
#endif
-#include "config_begin.hpp"
-
-#include <boost/move/move.hpp>
+#include <boost/container/detail/config_begin.hpp>
+#include <boost/container/detail/workaround.hpp>
namespace boost {
namespace container {
@@ -90,7 +89,7 @@ struct remove_reference<T&>
typedef T type;
};
-#ifndef BOOST_NO_RVALUE_REFERENCES
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
template<class T>
struct remove_reference<T&&>
@@ -100,6 +99,15 @@ struct remove_reference<T&&>
#else
+} // namespace container_detail {
+} //namespace container {
+
+template<class T>
+class rv;
+
+namespace container {
+namespace container_detail {
+
template<class T>
struct remove_reference< ::boost::rv<T> >
{
@@ -164,6 +172,10 @@ template <class T>
struct add_const_reference<T&>
{ typedef T& type; };
+template <class T>
+struct add_const
+{ typedef const T type; };
+
template <typename T, typename U>
struct is_same
{
@@ -201,6 +213,21 @@ struct remove_ref_const
typedef typename remove_const< typename remove_reference<T>::type >::type type;
};
+template <class T>
+struct make_unsigned
+{
+ typedef T type;
+};
+
+template <> struct make_unsigned<bool> {};
+template <> struct make_unsigned<signed char> {typedef unsigned char type;};
+template <> struct make_unsigned<signed short> {typedef unsigned short type;};
+template <> struct make_unsigned<signed int> {typedef unsigned int type;};
+template <> struct make_unsigned<signed long> {typedef unsigned long type;};
+#ifdef BOOST_HAS_LONG_LONG
+template <> struct make_unsigned<signed long long> {typedef unsigned long long type;};
+#endif
+
} // namespace container_detail
} //namespace container {
} //namespace boost {