diff options
Diffstat (limited to 'boost/container/detail/type_traits.hpp')
-rw-r--r-- | boost/container/detail/type_traits.hpp | 39 |
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 { |