diff options
author | Remko Tronçon <git@el-tramo.be> | 2010-03-28 15:46:49 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2010-03-28 15:46:49 (GMT) |
commit | f53a1ef582494458301b97bf6e546be52d7ff7e8 (patch) | |
tree | 7571b5cbcbd8a8f1dd1c966c9045b6cb69f0e295 /3rdParty/Boost/src/boost/type_traits/add_pointer.hpp | |
parent | 638345680d72ca6acaf123f2c8c1c391f696e371 (diff) | |
download | swift-contrib-f53a1ef582494458301b97bf6e546be52d7ff7e8.zip swift-contrib-f53a1ef582494458301b97bf6e546be52d7ff7e8.tar.bz2 |
Moving submodule contents back.
Diffstat (limited to '3rdParty/Boost/src/boost/type_traits/add_pointer.hpp')
-rw-r--r-- | 3rdParty/Boost/src/boost/type_traits/add_pointer.hpp | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/3rdParty/Boost/src/boost/type_traits/add_pointer.hpp b/3rdParty/Boost/src/boost/type_traits/add_pointer.hpp new file mode 100644 index 0000000..3e0e481 --- /dev/null +++ b/3rdParty/Boost/src/boost/type_traits/add_pointer.hpp @@ -0,0 +1,72 @@ + +// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000. +// Use, modification and distribution are subject to 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). +// +// See http://www.boost.org/libs/type_traits for most recent version including documentation. + +#ifndef BOOST_TT_ADD_POINTER_HPP_INCLUDED +#define BOOST_TT_ADD_POINTER_HPP_INCLUDED + +#include <boost/type_traits/remove_reference.hpp> + +// should be the last #include +#include <boost/type_traits/detail/type_trait_def.hpp> + +namespace boost { + +namespace detail { + +#if defined(__BORLANDC__) && (__BORLANDC__ < 0x5A0) +// +// For some reason this implementation stops Borlands compiler +// from dropping cv-qualifiers, it still fails with references +// to arrays for some reason though (shrug...) (JM 20021104) +// +template <typename T> +struct add_pointer_impl +{ + typedef T* type; +}; +template <typename T> +struct add_pointer_impl<T&> +{ + typedef T* type; +}; +template <typename T> +struct add_pointer_impl<T&const> +{ + typedef T* type; +}; +template <typename T> +struct add_pointer_impl<T&volatile> +{ + typedef T* type; +}; +template <typename T> +struct add_pointer_impl<T&const volatile> +{ + typedef T* type; +}; + +#else + +template <typename T> +struct add_pointer_impl +{ + typedef typename remove_reference<T>::type no_ref_type; + typedef no_ref_type* type; +}; + +#endif + +} // namespace detail + +BOOST_TT_AUX_TYPE_TRAIT_DEF1(add_pointer,T,typename boost::detail::add_pointer_impl<T>::type) + +} // namespace boost + +#include <boost/type_traits/detail/type_trait_undef.hpp> + +#endif // BOOST_TT_ADD_POINTER_HPP_INCLUDED |