~ubuntu-branches/ubuntu/natty/deal.ii/natty

« back to all changes in this revision

Viewing changes to contrib/boost/include/boost/type_traits/remove_const.hpp

  • Committer: Bazaar Package Importer
  • Author(s): Adam C. Powell, IV
  • Date: 2009-05-08 23:13:50 UTC
  • Revision ID: james.westby@ubuntu.com-20090508231350-rrh1ltgi0tifabwc
Tags: upstream-6.2.0
ImportĀ upstreamĀ versionĀ 6.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
//  (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
 
3
//  Hinnant & John Maddock 2000.  
 
4
//  Use, modification and distribution are subject to the Boost Software License,
 
5
//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
 
6
//  http://www.boost.org/LICENSE_1_0.txt).
 
7
//
 
8
//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
 
9
 
 
10
 
 
11
#ifndef BOOST_TT_REMOVE_CONST_HPP_INCLUDED
 
12
#define BOOST_TT_REMOVE_CONST_HPP_INCLUDED
 
13
 
 
14
#include <boost/type_traits/is_volatile.hpp>
 
15
#include <boost/type_traits/broken_compiler_spec.hpp>
 
16
#include <boost/type_traits/detail/cv_traits_impl.hpp>
 
17
#include <boost/config.hpp>
 
18
#include <boost/detail/workaround.hpp>
 
19
 
 
20
#include <cstddef>
 
21
 
 
22
#if BOOST_WORKAROUND(BOOST_MSVC,<=1300)
 
23
#include <boost/type_traits/msvc/remove_const.hpp>
 
24
#endif
 
25
 
 
26
// should be the last #include
 
27
#include <boost/type_traits/detail/type_trait_def.hpp>
 
28
 
 
29
namespace boost {
 
30
 
 
31
#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
32
 
 
33
namespace detail {
 
34
 
 
35
template <typename T, bool is_vol>
 
36
struct remove_const_helper
 
37
{
 
38
    typedef T type;
 
39
};
 
40
 
 
41
template <typename T>
 
42
struct remove_const_helper<T, true>
 
43
{
 
44
    typedef T volatile type;
 
45
};
 
46
 
 
47
 
 
48
template <typename T>
 
49
struct remove_const_impl
 
50
{
 
51
    typedef typename remove_const_helper<
 
52
          typename cv_traits_imp<T*>::unqualified_type
 
53
        , ::boost::is_volatile<T>::value
 
54
        >::type type;
 
55
};
 
56
 
 
57
} // namespace detail
 
58
 
 
59
// * convert a type T to non-const type - remove_const<T>
 
60
 
 
61
BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_const,T,typename boost::detail::remove_const_impl<T>::type)
 
62
BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_const,T&,T&)
 
63
#if !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)
 
64
BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_const,T const[N],T type[N])
 
65
BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_const,T const volatile[N],T volatile type[N])
 
66
#endif
 
67
 
 
68
#elif !BOOST_WORKAROUND(BOOST_MSVC,<=1300)
 
69
 
 
70
BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_const,T,typename boost::detail::remove_const_impl<T>::type)
 
71
 
 
72
#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
73
 
 
74
} // namespace boost
 
75
 
 
76
#include <boost/type_traits/detail/type_trait_undef.hpp>
 
77
 
 
78
#endif // BOOST_TT_REMOVE_CONST_HPP_INCLUDED