1.1 --- a/epoc32/include/stdapis/boost/call_traits.hpp Wed Mar 31 12:27:01 2010 +0100
1.2 +++ b/epoc32/include/stdapis/boost/call_traits.hpp Wed Mar 31 12:33:34 2010 +0100
1.3 @@ -5,160 +5,20 @@
1.4 //
1.5 // See http://www.boost.org/libs/utility for most recent version including documentation.
1.6
1.7 -// call_traits: defines typedefs for function usage
1.8 -// (see libs/utility/call_traits.htm)
1.9 +// See boost/detail/call_traits.hpp and boost/detail/ob_call_traits.hpp
1.10 +// for full copyright notices.
1.11
1.12 -/* Release notes:
1.13 - 23rd July 2000:
1.14 - Fixed array specialization. (JM)
1.15 - Added Borland specific fixes for reference types
1.16 - (issue raised by Steve Cleary).
1.17 -*/
1.18 -
1.19 -#ifndef BOOST_DETAIL_CALL_TRAITS_HPP
1.20 -#define BOOST_DETAIL_CALL_TRAITS_HPP
1.21 +#ifndef BOOST_CALL_TRAITS_HPP
1.22 +#define BOOST_CALL_TRAITS_HPP
1.23
1.24 #ifndef BOOST_CONFIG_HPP
1.25 #include <boost/config.hpp>
1.26 #endif
1.27 -#include <cstddef>
1.28
1.29 -#include <boost/type_traits/is_arithmetic.hpp>
1.30 -#include <boost/type_traits/is_pointer.hpp>
1.31 -#include <boost/detail/workaround.hpp>
1.32 -
1.33 -namespace boost{
1.34 -
1.35 -namespace detail{
1.36 -
1.37 -template <typename T, bool small_>
1.38 -struct ct_imp2
1.39 -{
1.40 - typedef const T& param_type;
1.41 -};
1.42 -
1.43 -template <typename T>
1.44 -struct ct_imp2<T, true>
1.45 -{
1.46 - typedef const T param_type;
1.47 -};
1.48 -
1.49 -template <typename T, bool isp, bool b1>
1.50 -struct ct_imp
1.51 -{
1.52 - typedef const T& param_type;
1.53 -};
1.54 -
1.55 -template <typename T, bool isp>
1.56 -struct ct_imp<T, isp, true>
1.57 -{
1.58 - typedef typename ct_imp2<T, sizeof(T) <= sizeof(void*)>::param_type param_type;
1.59 -};
1.60 -
1.61 -template <typename T, bool b1>
1.62 -struct ct_imp<T, true, b1>
1.63 -{
1.64 - typedef const T param_type;
1.65 -};
1.66 -
1.67 -}
1.68 -
1.69 -template <typename T>
1.70 -struct call_traits
1.71 -{
1.72 -public:
1.73 - typedef T value_type;
1.74 - typedef T& reference;
1.75 - typedef const T& const_reference;
1.76 - //
1.77 - // C++ Builder workaround: we should be able to define a compile time
1.78 - // constant and pass that as a single template parameter to ct_imp<T,bool>,
1.79 - // however compiler bugs prevent this - instead pass three bool's to
1.80 - // ct_imp<T,bool,bool,bool> and add an extra partial specialisation
1.81 - // of ct_imp to handle the logic. (JM)
1.82 - typedef typename boost::detail::ct_imp<
1.83 - T,
1.84 - ::boost::is_pointer<T>::value,
1.85 - ::boost::is_arithmetic<T>::value
1.86 - >::param_type param_type;
1.87 -};
1.88 -
1.89 -template <typename T>
1.90 -struct call_traits<T&>
1.91 -{
1.92 - typedef T& value_type;
1.93 - typedef T& reference;
1.94 - typedef const T& const_reference;
1.95 - typedef T& param_type; // hh removed const
1.96 -};
1.97 -
1.98 -#if BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT( 0x581 ) )
1.99 -// these are illegal specialisations; cv-qualifies applied to
1.100 -// references have no effect according to [8.3.2p1],
1.101 -// C++ Builder requires them though as it treats cv-qualified
1.102 -// references as distinct types...
1.103 -template <typename T>
1.104 -struct call_traits<T&const>
1.105 -{
1.106 - typedef T& value_type;
1.107 - typedef T& reference;
1.108 - typedef const T& const_reference;
1.109 - typedef T& param_type; // hh removed const
1.110 -};
1.111 -template <typename T>
1.112 -struct call_traits<T&volatile>
1.113 -{
1.114 - typedef T& value_type;
1.115 - typedef T& reference;
1.116 - typedef const T& const_reference;
1.117 - typedef T& param_type; // hh removed const
1.118 -};
1.119 -template <typename T>
1.120 -struct call_traits<T&const volatile>
1.121 -{
1.122 - typedef T& value_type;
1.123 - typedef T& reference;
1.124 - typedef const T& const_reference;
1.125 - typedef T& param_type; // hh removed const
1.126 -};
1.127 -
1.128 -template <typename T>
1.129 -struct call_traits< T * >
1.130 -{
1.131 - typedef T * value_type;
1.132 - typedef T * & reference;
1.133 - typedef T * const & const_reference;
1.134 - typedef T * const param_type; // hh removed const
1.135 -};
1.136 -#endif
1.137 -#if !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)
1.138 -template <typename T, std::size_t N>
1.139 -struct call_traits<T [N]>
1.140 -{
1.141 -private:
1.142 - typedef T array_type[N];
1.143 -public:
1.144 - // degrades array to pointer:
1.145 - typedef const T* value_type;
1.146 - typedef array_type& reference;
1.147 - typedef const array_type& const_reference;
1.148 - typedef const T* const param_type;
1.149 -};
1.150 -
1.151 -template <typename T, std::size_t N>
1.152 -struct call_traits<const T [N]>
1.153 -{
1.154 -private:
1.155 - typedef const T array_type[N];
1.156 -public:
1.157 - // degrades array to pointer:
1.158 - typedef const T* value_type;
1.159 - typedef array_type& reference;
1.160 - typedef const array_type& const_reference;
1.161 - typedef const T* const param_type;
1.162 -};
1.163 +#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
1.164 +#include <boost/detail/ob_call_traits.hpp>
1.165 +#else
1.166 +#include <boost/detail/call_traits.hpp>
1.167 #endif
1.168
1.169 -}
1.170 -
1.171 -#endif // BOOST_DETAIL_CALL_TRAITS_HPP
1.172 +#endif // BOOST_CALL_TRAITS_HPP