~ubuntu-branches/ubuntu/wily/davix/wily

« back to all changes in this revision

Viewing changes to deps/boost_intern/boost/type_traits/remove_cv.hpp

  • Committer: Package Import Robot
  • Author(s): Mattias Ellert
  • Date: 2015-07-31 13:17:55 UTC
  • mfrom: (5.1.3 sid)
  • Revision ID: package-import@ubuntu.com-20150731131755-mizprbmn7ogv33te
Tags: 0.4.1-1
* Update to version 0.4.1
* Implement Multi-Arch support

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_CV_HPP_INCLUDED
12
 
#define BOOST_TT_REMOVE_CV_HPP_INCLUDED
13
 
 
14
 
#include <boost/type_traits/broken_compiler_spec.hpp>
15
 
#include <boost/type_traits/detail/cv_traits_impl.hpp>
16
 
#include <boost/config.hpp>
17
 
#include <boost/detail/workaround.hpp>
18
 
 
19
 
#include <cstddef>
20
 
 
21
 
#if BOOST_WORKAROUND(BOOST_MSVC,<=1300)
22
 
#include <boost/type_traits/msvc/remove_cv.hpp>
23
 
#endif
24
 
 
25
 
// should be the last #include
26
 
#include <boost/type_traits/detail/type_trait_def.hpp>
27
 
 
28
 
namespace boost {
29
 
 
30
 
#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
31
 
 
32
 
namespace detail{
33
 
 
34
 
template <class T>
35
 
struct rvalue_ref_filter_rem_cv
36
 
{
37
 
   typedef typename boost::detail::cv_traits_imp<T*>::unqualified_type type;
38
 
};
39
 
 
40
 
#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
41
 
//
42
 
// We can't filter out rvalue_references at the same level as
43
 
// references or we get ambiguities from msvc:
44
 
//
45
 
template <class T>
46
 
struct rvalue_ref_filter_rem_cv<T&&>
47
 
{
48
 
   typedef T&& type;
49
 
};
50
 
#endif
51
 
 
52
 
}
53
 
 
54
 
 
55
 
//  convert a type T to a non-cv-qualified type - remove_cv<T>
56
 
BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_cv,T,typename boost::detail::rvalue_ref_filter_rem_cv<T>::type)
57
 
BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_cv,T&,T&)
58
 
#if !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)
59
 
BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_cv,T const[N],T type[N])
60
 
BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_cv,T volatile[N],T type[N])
61
 
BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_cv,T const volatile[N],T type[N])
62
 
#endif
63
 
 
64
 
#elif !BOOST_WORKAROUND(BOOST_MSVC,<=1300)
65
 
 
66
 
namespace detail {
67
 
template <typename T>
68
 
struct remove_cv_impl
69
 
{
70
 
    typedef typename remove_volatile_impl< 
71
 
          typename remove_const_impl<T>::type
72
 
        >::type type;
73
 
};
74
 
}
75
 
 
76
 
BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_cv,T,typename boost::detail::remove_cv_impl<T>::type)
77
 
 
78
 
#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
79
 
 
80
 
} // namespace boost
81
 
 
82
 
#include <boost/type_traits/detail/type_trait_undef.hpp>
83
 
 
84
 
#endif // BOOST_TT_REMOVE_CV_HPP_INCLUDED