annotate DEPENDENCIES/generic/include/boost/align/detail/remove_traits.hpp @ 133:4acb5d8d80b6 tip

Don't fail environmental check if README.md exists (but .txt and no-suffix don't)
author Chris Cannam
date Tue, 30 Jul 2019 12:25:44 +0100
parents f46d142149f5
children
rev   line source
Chris@102 1 /*
Chris@102 2 (c) 2014 Glen Joseph Fernandes
Chris@102 3 glenjofe at gmail dot com
Chris@102 4
Chris@102 5 Distributed under the Boost Software
Chris@102 6 License, Version 1.0.
Chris@102 7 http://boost.org/LICENSE_1_0.txt
Chris@102 8 */
Chris@102 9 #ifndef BOOST_ALIGN_DETAIL_REMOVE_TRAITS_HPP
Chris@102 10 #define BOOST_ALIGN_DETAIL_REMOVE_TRAITS_HPP
Chris@102 11
Chris@102 12 #include <boost/config.hpp>
Chris@102 13
Chris@102 14 #if !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS)
Chris@102 15 #include <type_traits>
Chris@102 16 #else
Chris@102 17 #include <cstddef>
Chris@102 18 #endif
Chris@102 19
Chris@102 20 namespace boost {
Chris@102 21 namespace alignment {
Chris@102 22 namespace detail {
Chris@102 23 #if !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS)
Chris@102 24 using std::remove_reference;
Chris@102 25 using std::remove_all_extents;
Chris@102 26 using std::remove_cv;
Chris@102 27 #else
Chris@102 28 template<class T>
Chris@102 29 struct remove_reference {
Chris@102 30 typedef T type;
Chris@102 31 };
Chris@102 32
Chris@102 33 template<class T>
Chris@102 34 struct remove_reference<T&> {
Chris@102 35 typedef T type;
Chris@102 36 };
Chris@102 37
Chris@102 38 #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
Chris@102 39 template<class T>
Chris@102 40 struct remove_reference<T&&> {
Chris@102 41 typedef T type;
Chris@102 42 };
Chris@102 43 #endif
Chris@102 44
Chris@102 45 template<class T>
Chris@102 46 struct remove_all_extents {
Chris@102 47 typedef T type;
Chris@102 48 };
Chris@102 49
Chris@102 50 template<class T>
Chris@102 51 struct remove_all_extents<T[]> {
Chris@102 52 typedef typename remove_all_extents<T>::type type;
Chris@102 53 };
Chris@102 54
Chris@102 55 template<class T, std::size_t N>
Chris@102 56 struct remove_all_extents<T[N]> {
Chris@102 57 typedef typename remove_all_extents<T>::type type;
Chris@102 58 };
Chris@102 59
Chris@102 60 template<class T>
Chris@102 61 struct remove_const {
Chris@102 62 typedef T type;
Chris@102 63 };
Chris@102 64
Chris@102 65 template<class T>
Chris@102 66 struct remove_const<const T> {
Chris@102 67 typedef T type;
Chris@102 68 };
Chris@102 69
Chris@102 70 template<class T>
Chris@102 71 struct remove_volatile {
Chris@102 72 typedef T type;
Chris@102 73 };
Chris@102 74
Chris@102 75 template<class T>
Chris@102 76 struct remove_volatile<volatile T> {
Chris@102 77 typedef T type;
Chris@102 78 };
Chris@102 79
Chris@102 80 template<class T>
Chris@102 81 struct remove_cv {
Chris@102 82 typedef typename remove_volatile<typename
Chris@102 83 remove_const<T>::type>::type type;
Chris@102 84 };
Chris@102 85 #endif
Chris@102 86 }
Chris@102 87 }
Chris@102 88 }
Chris@102 89
Chris@102 90 #endif